http://samples.gotdotnet.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/doc/webdataaccess.aspx

解决方案 »

  1.   

    我对datagrid不熟,我先看看 jupiterII() 说的例子
      

  2.   

    下面的例子很好:
    http://www.microsoft.com/taiwan/msdn/library/2002/Feb-2002/whitepaper/vbtchtopquestionsaboutaspnetdatagridservercontrol.htm#vbtchtopquestionsaboutaspnetdatagridservercontroleditingmultiplerows
      

  3.   

    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
    {

    // 建立 UPDATE 命令字符串
    string UpdateCmd = "UPDATE stud SET name = @name, sex = @sex, age = @age," +
    "address = @address WHERE stud_id = @stud_id";

    SqlCommand MyCommand = new SqlCommand(UpdateCmd, myConnection);

    // 设定 UPDATE 命令字串中各个参数的数据类型与长度
    MyCommand.Parameters.Add(new SqlParameter("@stud_id", SqlDbType.NVarChar, 10));
    MyCommand.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 10));
    MyCommand.Parameters.Add(new SqlParameter("@sex", SqlDbType.NVarChar ,10));
    MyCommand.Parameters.Add(new SqlParameter("@age", SqlDbType.Int, 4));
    MyCommand.Parameters.Add(new SqlParameter("@address", SqlDbType.NVarChar ,50));
    // 取得主索引键之值(此处为学生编号)
    MyCommand.Parameters["@stud_id"].Value = MyDataGrid.DataKeys[e.Item.ItemIndex];

    string[] Cols = new string[] {"@stud_id", "@name", "@sex", "@age", "@address"};

    // 取得 TableCell 物件的数目,也就是每一数据列之储存格的数目(等於 DataGrid 伺服器控制项中数据行的数目)
    int NumCols = e.Item.Cells.Count;

    // 略过第一栏与第二栏。因为第一栏是删除按钮,第二栏是编辑按钮。
    for (int i = 2; i<= NumCols - 1; i++)
    {
    TextBox CurrentTextBox = (TextBox)e.Item.Cells[i].Controls[0];
    string ColValue = CurrentTextBox.Text;

    // 检查字段(储存格)的内容是否为 Null 值
    if (ColValue == "")
    {
           //Message.Text = "错误: 每一个字段都必须输入数据不允许 Null 值!";
    return;
    }

    MyCommand.Parameters[Cols[i - 2]].Value = ColValue;
    }

    try
    {
    // 呼叫 ExecuteNonQuery() 方法以便针对数据来源执行 UPDATE 命令
    MyCommand.ExecuteNonQuery();

    // 完成更新作业后使数据行跳出编辑模式
    MyDataGrid.EditItemIndex = -1;
    }
    catch (SqlException Exp)
    {
    if (Exp.Number == 2627)
    Message.InnerHtml  = "错误: 具有相同主索引键的数据纪录已经存在。";
    else
    Message.InnerHtml  = "错误: 无法更新数据纪录,请确定各字段是否都已正确输入。";
    }

    // 关闭连接
    MyCommand.Connection.Close();
    BindGrid();

    }
      

  4.   

    可以。
    你只须将datagrid的EditItemIndex设置为你当前选中的行即可进行编辑。编辑完后可采用两种方法保存修改的数据,
    一:先修改dataset,然后一次行的导入到数据库,进行修改数据库二:将你datagrid中的字段和数据库中的字段进行直接对应修改