ارسال مقادیر GridView به صفحه دیگر و به روزرسانی رکوردها

پنجشنبه 12 شهریور 1394

در این مقاله، آموزش می دهیم که چگونه مقادیر سطرهای GridView را به صفحه ای دیگر ارسال کرده و مقادیر رکوردها را به روزرسانی نماییم و با استفاده از asp.net آن را به صفحه اصلی برگردانیم.

ارسال مقادیر GridView به صفحه دیگر و به روزرسانی رکوردها

مراحل انجام کار:

- ویژوال استودیو 2013 را باز می کنیم.
- یک پروژه از نوع ASP.NET Web Application به نام UpdateGridviewRowValuesInSecondPage ایجاد می کنیم.

- روی نام پروژه کلیک کرده و یک Web Form به برنامه اضافه می کنیم.
- کد زیر را در تگ <form> در صفحه WebForm1.aspx   اضافه می کنیم.


    <div>  
                <asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand">  
                    <Columns>  
                        <asp:BoundField DataField="EmpNo" HeaderText="EmpId" />  
                        <asp:BoundField DataField="EmpName" HeaderText="EmpName" />  
                        <asp:BoundField DataField="Job" HeaderText="Job" />  
                        <asp:BoundField DataField="Sal" HeaderText="EmpSalary" />  
                        <asp:BoundField DataField="Dept" HeaderText="Department" />  
                        <asp:TemplateField>  
                            <ItemTemplate>  
                                <asp:Button ID="btnEdit" runat="server" Width="60" Text="Edit" CommandName="EditButton" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />  
                            </ItemTemplate>  
                        </asp:TemplateField>  
                    </Columns>  
                </asp:GridView>  
            </div>  

- کد زیر را نیز در رویداد Page Load صفحه اضافه می کنیم.


    protected void Page_Load(object sender, EventArgs e)    
    {    
        if (!this.IsPostBack)    
        {    
            BindGridView();    
        }                
    }    
      
    private void BindGridView()    
    {    
        string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString;    
        SqlConnection con = new SqlConnection(constr);    
        SqlCommand cmd = new SqlCommand("select * from Emp",con);    
        DataTable dt = new DataTable();    
        SqlDataAdapter da = new SqlDataAdapter(cmd);    
        da.Fill(dt);    
        GridView1.DataSource = dt;    
        GridView1.DataBind();    
    }  


- کد زیر، متد رویداد GridView1_RowCommand از صفحه WebForm1.aspx می باشد.

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)    
{    
    if (e.CommandName == "EditButton")    
    {    
        int index = Convert.ToInt32(e.CommandArgument);    
        GridViewRow row = GridView1.Rows[index];    
        Response.Redirect("~/UpdateGridView.aspx?EmpNo=" + row.Cells[0].Text);    
    }    
}


- صفحه دیگری به نام UpdateGridView.aspx به پروژه اضافه می کنیم و کد زیر را در تگ <form> آن می نویسیم.


    <div>    
       <table>    
           <tr>    
               <td>EmpId</td>    
               <td>    
                   <asp:TextBox ID="txtEmpId" runat="server" ReadOnly="true" />    
               </td>    
           </tr>    
           <tr>    
               <td>EmpName</td>    
               <td>    
                   <asp:TextBox ID="txtEmpName" runat="server" />    
               </td>    
           </tr>    
           <tr>    
               <td>Job</td>    
               <td>    
                   <asp:TextBox ID="txtJob" runat="server" />    
               </td>    
           </tr>    
           <tr>    
               <td>EmpSalary</td>    
               <td>    
                   <asp:TextBox ID="txtEmpSalary" runat="server" />    
               </td>    
           </tr>    
           <tr>    
               <td>Department</td>    
               <td>    
                   <asp:TextBox ID="txtDept" runat="server" />    
               </td>    
           </tr>    
           <tr>    
               <td align="center">    
                    <asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" />    
               </td>    
               <td align="center">    
                   <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click" />    
               </td>    
           </tr>    
       </table>    
    lt;/div>    


- و کد زیر را در رویداد Page Load  می نویسیم.


    int empno = 0;    
    protected void Page_Load(object sender, EventArgs e)    
    {    
        empno = Convert.ToInt32(Request.QueryString["EmpNo"].ToString());    
        if (!IsPostBack)    
        {    
            BindTextBoxvalues();    
        }    
    }    
      
    private void BindTextBoxvalues()    
    {    
        string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString;    
        SqlConnection con = new SqlConnection(constr);    
        SqlCommand cmd = new SqlCommand("select * from Emp where EmpNo=" + empno, con);    
        DataTable dt = new DataTable();    
        SqlDataAdapter da = new SqlDataAdapter(cmd);    
        da.Fill(dt);    
        txtEmpId.Text = dt.Rows[0][0].ToString();    
        txtEmpName.Text = dt.Rows[0][1].ToString();    
        txtJob.Text = dt.Rows[0][2].ToString();    
        txtEmpSalary.Text = dt.Rows[0][3].ToString();    
        txtDept.Text = dt.Rows[0][4].ToString();    
    }   


- کد زیر را در رویداد کلیک دکمه btnUpdate که در صفحه وجود دارد، می نویسیم.


    protected void btnUpdate_Click(object sender, EventArgs e)    
    {    
        string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString;    
        SqlConnection con = new SqlConnection(constr);    
        SqlCommand cmd = new SqlCommand("update Emp set EmpName='" + txtEmpName.Text + "',Job='" + txtJob.Text + "',Sal=" + txtEmpSalary.Text + ",Dept='" + txtDept.Text + "' where EmpNo=" + empno, con);    
        con.Open();    
        int result = cmd.ExecuteNonQuery();    
        con.Close();    
        if (result == 1)    
        {    
            ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowSuccess", "javascript:alert('Record Updated Successfully');", true);    
        }    
        Response.Redirect("~/WebForm1.aspx");    
    }  


- قطعه کد زیر را نیز در رویداد دکمه btnCancel می نویسیم.

protected void btnCancel_Click(object sender, EventArgs e)  
{  
    Response.Redirect("~/WebForm1.aspx");  
}


- حال اگر برنامه را اجرا کنید، خروجی به شکل زیر خواهید دید:


- تصویر زیر، به روزرسانی دستمزد کارمندی با شماره کارمندی 1 را نشان می دهد.


- بعد از به روزرسانی می توانید به صفحه GridView برگشته و به روزرسانی را چک کنید.

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

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

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

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