0

我想编辑gridview的行。为此,我添加了showitbutton = true。我已经从cs文件绑定了gridview。我需要为此写3个函数吗?(为了编辑,我在cs文件中添加了3个函数。)。我从互联网上得到了帮助。但有些地方不明白。

--在aspx中

<asp:GridView datakeyname="Id" Id ="Gridview1" onRowEditing="GridView1_RowEditing" RowCancelingEdit=" GridView1_RowCancelingEdit" onRowUpdating ="GridView1_RowUpdating" >
<column>
// hyperlink ,dataTextfield is id
// some checkboxfield.(start from column 6)
</column>

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        //code for Binding grid
    }

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
       // for fetching value of id and checkboxfield(column 6)
  string Id= GridView1.DataKeys[e.RowIndex].Values["Id"].ToString());
   bool ischeck = (Gridview1.Rows[e.RowIndex].Cells[5].Controls[0] as checkBox).Checked;
        // code for updating grid
          GridView1.EditIndex = -1;
        //Now bind the gridview gain here
    }

protected void GridView1_RowCancelingEdit(object sender, GridViewUpdateEventArgs e)
    {
        GridView1.EditIndex = -1;
        //Now bind the gridview gain here
    }

我是否朝着正确的方向前进?数据键的用途是什么。我是否正确使用?为什么在更新和取消事件中使用 GridView1.EditIndex = -1。第 6 列是复选框字段。为什么 .Controls[0] 用于访问该复选框字段。

4

1 回答 1

0
  1. 如果您使用ObjectDataSource(或SqlDataSourceOleDbDataSource)进行数据绑定并使用UpdateCommand, DeleteCommand, InsertCommand,则无需为编辑/更新操作显式编写这三个函数。当您在代码隐藏中编写绑定代码或想要在任何操作之前/之后做额外的工作时,您需要这些功能。

  2. RowEditing当您单击GridView 上的“编辑”时触发。在这里,您可以通过写入来指定要在编辑模式GridView1.EditIndex = e.NewEditIndex中打开的行。您还可以在此处编写代码来完成用户进入编辑模式之前所需的任何工作。例如,您可以检查业务规则条件,如果不满足规则则取消操作。

  3. RowUpdating当您在 GridView 上单击“保存”/“更新”时触发。这是在实际的数据库操作之前触发的。如果你有一个UpdateCommand数据源,那么你不需要编写数据库保存例程,否则你在这里写。

  4. DataKeys标识标识绑定数据的“”。您在将DataKeys数据绑定到 GridView 时指定。例如,数据库表的主键。这一行:string Id= GridView1.DataKeys[e.RowIndex].Values["Id"].ToString());在这里,您正在获取当前行的“ Id ”键(您可以有多个键)的值。

  5. GridView1.EditIndex = -1in updatecancel指定 GridView 不应再处于editmode。如果此值 >= 0,则 GridView 将进入行的编辑模式(索引从 0 开始)。所以我们将它设置为 -1,表示它不应该处于editmode

  6. Controls[0]用于选择该单元格中的第一个控件(您可能有多个控件)。或者,您也可以使用FindControl.

于 2013-07-09T10:08:51.247 回答