1)我注意到如果我们不将GridView绑定到对象数据源控件,那么当用户将GridView置于编辑模式时,我们必须处理GridView.RowEditing事件(否则我们得到一个异常)并在此事件中放入GridView的行进入编辑模式。是否有理由为什么GridView不会自动将行放入编辑模式?
2)当我们手动将GridView绑定到DataSet的一个表并且用户将一行放入编辑模式时,行的列将用文本框替换字段。但由于某些原因,这些文本框不显示当前字段值,而是根本不显示任何文本。我做错了什么?
3)我还处理了gridView.RowUpdated事件,因此我可以将行放回非编辑模式,但不起作用。我甚至尝试按下其他行的“编辑”按钮,但行仍然不会退出编辑模式。我有什么想法吗?
protected void gvwEmployees_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
e.KeepInEditMode = false;
}
感谢名单
答案 0 :(得分:1)
如果不使用DataSource
控件和GridView
或其他数据绑定控件来隐藏手动数据绑定的复杂性,则必须手动处理RowEditing
,{{1} } {和RowUpdating
等。通过内置数据模型和自动绑定,RowDeleting
可以为您处理这些事件。
您尚未发布GridView
代码,但我怀疑您没有将GridView RowEditing
设置为EditIndex
并且没有重新绑定,这可能就是您不是看到当前的数据。
NewEditIndex
您的protected void gvwEmployees_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView.EditIndex = e.NewEditINdex;
BindData();
}
活动也是如此。您必须手动更新数据,然后将RowUpdating
设置为-1,这会将EditIndex
恢复为GridView
模式。请注意,手动绑定时,不会填充ReadOnly
,e.OldValues
和e.NewValues
的e.Keys属性。这意味着您必须使用GridViewUpdateEventArgs
来自行处理更新,e.RowIndex
是已编辑行的索引。
protected void gvwEmployees_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridView.EditIndex = -1;
BindData();
}