ثبت داده های GridView Footer در ASP.Net

شنبه 23 آبان 1394

در این مقاله نحوه ذخیره داده ها از GridView در دیتابیس را با استفاده از textbox در footer خواهیم آموخت. کنترل GridView یکی از مهمترین کنترلهای داده در ASP.Net است. GridView به ما امکان می دهدبه یک Datasource متصل شویم و داده هایمان را با فرمت جدول مشاهده کنیم.

ثبت داده های GridView Footer در ASP.Net

در این مقاله نحوه ذخیره داده ها از GridView  در دیتابیس را با استفاده از textbox در footer خواهیم آموخت. کنترل GridView  یکی از مهمترین کنترلهای داده در ASP.Net است. GridView  به ما امکان می دهدبه یک Datasource  متصل شویم و داده هایمان را با فرمت جدول مشاهده کنیم. می توانیم آن را شخصی سازی کنیم و کنترل های دیگر را در آن اضافه کنیم. کنترل کاربر پسندی است. grid های مختلفی در jQuery وجود دارند که استفاده می شوند اما انعطاف پذیری و کدهای استاندارد GridView  در ASP.net با دیگر کنترل ها قابل مقایسه نیست.

برای درک بهتر یک مثال ساده آورده ایم:

در پروژه Asp.net خود یک Gridview اضافه کرده ایم. و در Command Field یک کلید ویرایش مانند زیر قرار دادیم.

فیلدهای مورد نظر را به GridView  اضافه کرده ایم .

اکنون برای اضافه کردن TextBox در Footer  به قسمت edit template می رویم.

 

سپس با استفاده از drag & drop یک textbox  برای یکی از ستونها مانند تصویر زیر در footer  قرار می دهیم.

در اینجا برای "نام" textbox  را اضافه کرده ایم.  برای ستونهای دیگر هم به همین صورت در footer ، یک textbox قرار می دهیم.

اگر کنترل دیگری هم نیاز باشد می توان از این طریق به footer  اضافه کرد.

بعد از اضافه کردن textbox ها یک دکمه Buttonبرای اضافه کردن رکورد جدید در جدول قرار می دهیم.

 

اکنون به Edit columns رفته و همه فیلدها را به template fields تبدیل میکنیم.

 

بعد از اعمال این تغییرات کد شما به صورت زیر خواهد بود:

 

    <div style="margin-left:15%">  
        <asp:GridView ID="grd_details" runat="server" AutoGenerateColumns="False" ForeColor="#000099" OnRowEditing="grd_details_RowEditing" ShowFooter="True" Width="800px">  
            <Columns>  
                <asp:TemplateField HeaderText="Name" SortExpression="Name">  
                    <EditItemTemplate>  
                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>  
                    </EditItemTemplate>  
                    <FooterTemplate>  
                        <asp:TextBox ID="txt_name" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>  
                    </FooterTemplate>  
                    <ItemTemplate>  
                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Name") %>'></asp:Label>  
                    </ItemTemplate>  
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="Email Id" SortExpression="Email">  
                    <EditItemTemplate>  
                        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Email") %>'></asp:TextBox>  
                    </EditItemTemplate>  
                    <FooterTemplate>  
                        <asp:TextBox ID="txt_email" runat="server" Text='<%# Bind("Email") %>'></asp:TextBox>  
                    </FooterTemplate>  
                    <ItemTemplate>  
                        <asp:Label ID="Label3" runat="server" Text='<%# Bind("Email") %>'></asp:Label>  
                    </ItemTemplate>  
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="State" SortExpression="State">  
                    <EditItemTemplate>  
                        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("State") %>'></asp:TextBox>  
                    </EditItemTemplate>  
                    <FooterTemplate>  
                        <asp:TextBox ID="txt_state" runat="server" Text='<%# Bind("State") %>'></asp:TextBox>  
                    </FooterTemplate>  
                    <ItemTemplate>  
                        <asp:Label ID="Label4" runat="server" Text='<%# Bind("State") %>'></asp:Label>  
                    </ItemTemplate>  
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="MOBILE" SortExpression="mobile">  
                    <ItemTemplate>  
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("mobileNo") %>'></asp:Label>  
                    </ItemTemplate>  
                    <EditItemTemplate>  
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("mobile") %>'></asp:TextBox>  
                    </EditItemTemplate>  
                    <FooterTemplate>  
                        <asp:TextBox ID="txt_mobile" runat="server" Text='<%# Bind("mobile") %>'></asp:TextBox>  
                    </FooterTemplate>  
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="EDIT">  
                    <EditItemTemplate>  
                        <asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />    
                        <asp:Button ID="Button2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" /> </EditItemTemplate>  
                    <FooterTemplate>  
                        <asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update" OnClick="Button1_Click" Text="Add" /> </FooterTemplate>  
                    <ItemTemplate>  
                        <asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" /> </ItemTemplate>  
                </asp:TemplateField>  
            </Columns>  
            <FooterStyle BackColor="#66FFFF" />  
            <HeaderStyle BackColor="Yellow" /> </asp:GridView>  
    </div>  

 

نتیجه به صورت زیر مشاهده می شود.

 

اکنون کدهای زیر را برای پر شدن جدول از gridview استفاده میکنیم.

    public void filldata()  
    {  
       da = new SqlDataAdapter("select * from tbl_registration", BLL.connect());  
       dt = new DataTable();  
       da.fill(dt);  
       grd_details.DataSource = dt;  
       grd_details.DataBind();  
    }  

اکنون این متد را در رویداد Pageload صدا می زنیم.

    public partial class _Default : System.Web.UI.Page  
    {  
       SqlConnection con = new SqlConnection("Data Source=DEBENDRA;Initial Catalog=Students;User ID=sa;Password=123");  
       SqlDataAdapter da;  
       DataTable dt;  
       protected void Page_Load(object sender, EventArgs e)  
       {  
          if(!IsPostBack)  
          {  
             filldata();  
          }  
    }  

در اینجا داده ها را در GridView  مشاهده میکنید . اما زمانی که در GridView  داده ای نباشد ، GridView  قابل مشاهده نخواهد بود. برای نشان داده شدن GridView  متد filldata را به صورت زیر اصلاح میکنیم.

public void filldata()  
{  
    da = new SqlDataAdapter("select * from tbl_registration", BLL.connect());  
    dt = new DataTable();  
    da.Fill(dt);  
    if (dt.Rows.Count > 0)  
    {  
        grd_details.DataSource = dt;  
        grd_details.DataBind();  
    }  
    else  
    {  
        dt.Rows.Add(dt.NewRow());  
        grd_details.DataSource = dt;  
        grd_details.DataBind();  
        int totalcolums = grd_details.Rows[0].Cells.Count;  
        grd_details.Rows[0].Cells.Clear();  
        grd_details.Rows[0].Cells.Add(new TableCell());  
        grd_details.Rows[0].Cells[0].ColumnSpan = totalcolums;  
        grd_details.Rows[0].Cells[0].Text = "No Data Found";  
    }  
} 

 

و حالا برای ذخیره داده ها از textbox ، از کدهای زیر استفاده میکنیم.

protected void Button1_Click(object sender, EventArgs e)  
{  
    int result = 0;  
    try  
    {  
        TextBox txtName = (TextBox) grd_details.FooterRow.FindControl("txt_name");  
        TextBox TxtEmail = (TextBox) grd_details.FooterRow.FindControl("txt_email");  
        TextBox Txtstate = (TextBox) grd_details.FooterRow.FindControl("txt_state");  
        TextBox Txtmobile = (TextBox) grd_details.FooterRow.FindControl("txt_mobile");  
        SqlCommand cmd = new SqlCommand("insert into tbl_registration(Name,Email,State,MobileNo) values('" + txtName.Text + "','" + TxtEmail.Text + "','" + Txtstate.Text + "','" + Txtmobile.Text + "')", con);  
        con.Open();  
        result = cmd.ExecuteNonQuery();  
        con.Close();  
        if (result == 1)  
        {  
            Response.Write("Data Saved");  
            filldata();  
        }  
        else  
        {  
            Response.Write("Data Not saved.Please try again.");  
        }  
    }  
    catch (Exception ex)  
    {  
        throw ex;  
    }  

 

از این راه می توانیم داده ها را از footer در GridView با استفاده از textbox اضافه کنیم.

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید