可以的,你要编辑datagrid的属性。用右键查看DATAGRID属性,有一项column  (集合),进去看看就知道了

解决方案 »

  1.   

    看下例:
    </asp:BoundColumn>
    <asp:BoundColumn DataField="content" HeaderText="内容">
    <HeaderStyle Wrap="False" HorizontalAlign="Center" Height="40px" Width="15%" VerticalAlign="Middle">
    </HeaderStyle>
    <ItemStyle Height="40px">
    </ItemStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="note" HeaderText="备注">
    <HeaderStyle Wrap="False" HorizontalAlign="Center" Height="40px" Width="8%" VerticalAlign="Middle">
    </HeaderStyle>
    <ItemStyle Height="40px">
    </ItemStyle>
    </asp:BoundColumn>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="修改" CancelText="取消" EditText="修改">
    <HeaderStyle HorizontalAlign="Center" Height="40px" Width="5%" VerticalAlign="Middle">
    </HeaderStyle>
    <ItemStyle Height="40px">
    </ItemStyle>
    </asp:EditCommandColumn>
    <asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete">
    <HeaderStyle HorizontalAlign="Center" Height="40px" Width="5%" VerticalAlign="Middle">
    </HeaderStyle>
    <ItemStyle Height="40px">
    </ItemStyle>
    </asp:ButtonColumn>
    </Columns>
      

  2.   

    补充:
    <asp:DataGrid 
      OnEditCommand ="DataGrid1_Edit"
      OnUpdateCommand="DataGrid1_Update"
      ...>
    再编写
    DataGrid1_Edit、DataGrid1_Update事件。
    eg:
    public void DataGrid1_Edit(Object sender,DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex=e.Item.ItemIndex;
                                ....;

      

  3.   

    谢谢gust99(阿呆)、Johnyin(阿土(还没掉渣))
    我已经找到了这种方法。但是,但我点更新时更新不了。
    应怎样写:OnUpdateCommand 才能保存。
    还有 我如果将ButtonType="LinkButton" 改为ButtonType="pushButton",就不起作用了。
    是这样吗??
      

  4.   

    看下面的例子:
    private void myDataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    SqlConnection myConnection=new SqlConnection("server=localhost;uid=sa;pwd=; database=File"); string updateCmd="update users set USERID=@userid,password=@password,name=@name,department=@department,role=@role,email=@email,tel=@tel, restrain=@restrain where USERID=@userid";            SqlCommand myCommand=new SqlCommand(updateCmd,myConnection); myCommand.Parameters.Add
    (new SqlParameter("@USERID",SqlDbType.NVarChar,10)); myCommand.Parameters["@userid"].Value=myDataGrid.DataKeys[e.Item.ItemIndex];
    //myCommand.Parameters["@userid"].Value=((TextBox)e.Item.Cells[0].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@password",SqlDbType.NVarChar,10)); myCommand.Parameters["@password"].Value=((TextBox)e.Item.Cells[1].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@name",SqlDbType.NVarChar,10)); myCommand.Parameters["@name"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@department",SqlDbType.NVarChar,20)); myCommand.Parameters["@department"].Value=((TextBox)e.Item.Cells[3].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@role",SqlDbType.NVarChar,20)); myCommand.Parameters["@role"].Value=((TextBox)e.Item.Cells[4].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@email",SqlDbType.NVarChar,10)); myCommand.Parameters["@email"].Value=((TextBox)e.Item.Cells[5].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@tel",SqlDbType.NVarChar,10)); myCommand.Parameters["@tel"].Value=((TextBox)e.Item.Cells[6].Controls[0]).Text; myCommand.Parameters.Add
    (new SqlParameter("@restrain",SqlDbType.NVarChar,5)); myCommand.Parameters["@restrain"].Value=((TextBox)e.Item.Cells[7].Controls[0]).Text; try
    {
    myCommand.Connection.Open();
    myCommand.ExecuteNonQuery();
    myDataGrid.EditItemIndex=-1;
    myCommand.Connection.Close();
    message.Style["color"]="green";
    message.Text="数据更新成功!";
    BindGrid();
    }
    catch
    {
    message.Text="操作失败";
    }
      

  5.   

     执行到:myCommand.Parameters["@userid"].Value=myDataGrid.DataKeys[e.Item.ItemIndex];
    提示:
    System.ArgumentOutOfRangeException: 索引超出范围。必须为非负并小于集合大小。参数名:index不知道为什么
      

  6.   

    啊?你不会是原封不动的执行我的代码吧?!你需要在SQL SERVER2000建一张表,定义我的那些字段,在DATAGRID中也要绑定那些字段
    注意:DATAGRID中,DataKeyField=USERID
      

  7.   

    我知道。我是用的northwind数据库
      

  8.   

    qq不常用,EMAIL:[email protected] 不要那么客气,我也是初学者
      

  9.   

    gust99(阿呆):我知道了因为我没哟一定DataKeyField
    可还是更新不了,调试时发现 ((TextBox)e.Item.Cells[1].Controls[0]).Text 的值
    还是原来的(未修改之前的数据)
    sqlConnection1.Open();
    string jj=((TextBox)e.Item.Cells[2].Controls[0]).Text;
    string kk=((TextBox)e.Item.Cells[1].Controls[0]).Text;
    this.sqlUpdateCommand1.Parameters["@FirstName"].Value=jj;
    this.sqlUpdateCommand1.Parameters["@LastName"].Value=kk;
    this.sqlUpdateCommand1.Parameters["@Original_EmployeeID"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
        this.sqlUpdateCommand1.ExecuteNonQuery();
      

  10.   

    我要结贴了。但问题尚未解决。请gust99(阿呆)再看一看。
      

  11.   

    不好意思,还以为你解决了。((TextBox)e.Item.Cells[1].Controls[0]).Text 应该会变的,建议你打开监视窗口看一下。
      

  12.   

    是不是数据绑定的问题?if (!IsPostBack)

    BindGrid();
    }
      

  13.   

    gust99(阿呆):你说的对,如果用BindGrid()绑定数据。((TextBox)e.Item.Cells[1].Controls[0]).Text 的数会变。我用的是数据控件。编辑时没有重新帮定。用数据控件
     就不能编辑吗?
      

  14.   

    再VisualStudio.Net 中的SqlDataAdapter,DataSet,SqlConnection,SqlCommand ...等等。
    直接拖到webfrom中设置他们的属性就可以用datagrid控件直接帮定数据了。
      

  15.   

    gust99(阿呆):请你看一下http://www.csdn.net/expert/topic/431/431722.shtm好吗。