我的DataGrid中有很多行数据,我想更新某一行的某个字段的值,我该用什么方法?

解决方案 »

  1.   

    使用模版列,每一列加一个button按钮,再在时间里写响应的sql语句
      

  2.   

    给DataGrid增加一个编辑、更新、取消按钮列
      

  3.   

    <asp:datagrid id="DataGrid1" runat="server" DataKeyField="EmployeeID" CssClass="border" CellPadding="5"
    BorderWidth="0px" CellSpacing="1" AutoGenerateColumns="False">
    <ItemStyle CssClass="item"></ItemStyle>
    <HeaderStyle CssClass="header"></HeaderStyle>
    <Columns>
    <asp:BoundColumn DataField="FirstName" HeaderText="FirstName"></asp:BoundColumn>
    <asp:BoundColumn DataField="LastName" HeaderText="LastName"></asp:BoundColumn>
    <asp:BoundColumn DataField="Title" HeaderText="Title"></asp:BoundColumn>
    <asp:BoundColumn DataField="BirthDate" HeaderText="BirthDate" DataFormatString="{0:yyyy-MM-dd}"></asp:BoundColumn>
    <asp:ButtonColumn ButtonType="LinkButton" CommandName="edit" Text="edit" Visible="False"></asp:ButtonColumn>
    <asp:ButtonColumn ButtonType="LinkButton" CommandName="update" Text="update" Visible="False"></asp:ButtonColumn>
    </Columns>
    </asp:datagrid>
    ==========================================================================
    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    if(e.CommandName=="edit")
    {
    this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
    SetBind();
    }
    if(e.CommandName=="update")
    {
    try
    {
    SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["strconn"]);
    SqlCommand comm=new SqlCommand("update Employees set FirstName=@FirstName,LastName=@LastName,Title=@Title,BirthDate=@BirthDate where EmployeeID=@EmployeeID",conn);
    SqlParameter parm1=new SqlParameter("@FirstName",SqlDbType.NVarChar,20);
    parm1.Value=((TextBox)e.Item.Cells[0].Controls[0]).Text;
    SqlParameter parm2=new SqlParameter("@LastName",SqlDbType.NVarChar,10);
    parm2.Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;
    SqlParameter parm3=new SqlParameter("@Title",SqlDbType.NVarChar,20);
    parm3.Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;
    SqlParameter parm4=new SqlParameter("@BirthDate",SqlDbType.DateTime);
    parm4.Value=((TextBox)e.Item.Cells[3].Controls[0]).Text;
    SqlParameter parm5=new SqlParameter("@EmployeeID",SqlDbType.Int);
    parm5.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
    comm.Parameters.Add(parm1);
    comm.Parameters.Add(parm2);
    comm.Parameters.Add(parm3);
    comm.Parameters.Add(parm4);
    comm.Parameters.Add(parm5);
    conn.Open();
    comm.ExecuteNonQuery();
    conn.Close();
    }
    catch
    {
    Response.Write("<script>alert('输入的数据格式有误');</script>");
    }
    finally
    {
    this.DataGrid1.EditItemIndex=-1;
    SetBind();
    }
    }
    ==============================================
    这只是一种,方法很多的
      

  4.   

    string content=((TextBox)e.Item.Cells[0].Controls[0]).Text;获取所要改的列的cell的值
    在执行更新就好