我想要编辑gridview的行。为此,我添加了showsitbutton = 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
}
我是否朝着正确的方向前进?使用datakey。我使用得当吗?为什么GridView1.EditIndex = -1更新和取消event.Column 6是checkboxfield.why .Controls [0]用于访问那个复选框。
答案 0 :(得分:0)
如果您使用ObjectDataSource
(或SqlDataSource
或OleDbDataSource
)进行数据绑定并使用UpdateCommand
,DeleteCommand
,{{1}然后,您不需要为编辑/更新操作显式编写这三个函数。在代码隐藏中编写绑定代码或者想要在任何操作之前/之后执行其他工作时,您需要这些功能。
InsertCommand
。在这里,您可以通过编写RowEditing
来指定要在 editmode 中打开的行。您还可以在此处编写代码,以便在将用户放入 editmode 之前执行所需的任何工作。例如,您可以检查业务规则条件,并在不符合规则时取消操作。
GridView1.EditIndex = e.NewEditIndex
。这是在实际数据库操作之前触发的。如果数据源上有RowUpdating
,那么您不需要编写数据库保存例程,否则请在此处写入。
UpdateCommand
标识标识绑定数据的“ key ”。在数据绑定到GridView时指定DataKeys
。例如,数据库表的主键。这一行:DataKeys
您在这里获取当前行的“ Id ”键(您可以拥有多个键)的值。
string Id= GridView1.DataKeys[e.RowIndex].Values["Id"].ToString());
指定GridView不应再位于 editmode 中。如果此值为> = 0,则将GridView放入该行的 editmode (索引从0开始)。所以我们将它设置为-1,表示它不应该在 editmode 中。
GridView1.EditIndex = -1
用于选择该单元格中的第一个控件(您可能有多个控件)。或者,您也可以使用Controls[0]
。