当GRidView行处于编辑模式时,文本框不显示当前值

时间:2009-12-03 18:44:23

标签: asp.net data-binding gridview


1)我注意到如果我们不将GridView绑定到对象数据源控件,那么当用户将GridView置于编辑模式时,我们必须处理GridView.RowEditing事件(否则我们得到一个异常)并在此事件中放入GridView的行进入编辑模式。是否有理由为什么GridView不会自动将行放入编辑模式?


2)当我们手动将GridView绑定到DataSet的一个表并且用户将一行放入编辑模式时,行的列将用文本框替换字段。但由于某些原因,这些文本框不显示当前字段值,而是根本不显示任何文本。我做错了什么?


3)我还处理了gridView.RowUpdated事件,因此我可以将行放回非编辑模式,但不起作用。我甚至尝试按下其他行的“编辑”按钮,但行仍然不会退出编辑模式。我有什么想法吗?

protected void gvwEmployees_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
    e.KeepInEditMode = false; 
}


感谢名单

1 个答案:

答案 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模式。请注意,手动绑定时,不会填充ReadOnlye.OldValuese.NewValues的e.Keys属性。这意味着您必须使用GridViewUpdateEventArgs来自行处理更新,e.RowIndex是已编辑行的索引。

protected void gvwEmployees_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridView.EditIndex = -1;
    BindData();
}