.net GridView OnRowUpdating没有获取TextBox的当前值

时间:2013-04-12 03:58:51

标签: .net gridview webforms

根据这个文档,我添加了一个gridview并实现了onupdate。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowediting.aspx

我打开页面并单击将设置editinex并重新绑定的编辑:

protected void rowEdit(object sender, GridViewEditEventArgs e)
{
    EditProducts.EditIndex = e.NewEditIndex;
    EditProducts.DataBind();
}

在第3栏中,我改变了值(让我们说它是“你好”,我把它改成“再见”)。然后单击“更新”。 (第一列是用于编辑和删除或更新的按钮列,取消第二列显示id)。

调用onrowupdate方法,我尝试根据msdn(第二个数据列)中的示例代码获取第3列的值:

protected void RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = EditProducts.Rows[e.RowIndex];
    String previousValue= ((TextBox)(row.Cells[2].Controls[0])).Text;
    String actualValue = Request.Params["EditProducts$ctl02$ctl03"];

字符串previousValue不是“再见”;它仍然是“你好”

在Firefox中,我可以看到“goodbye”已提交,但rowUpdating中TextBox控件的值为“hello”。必须从视图状态中错误地获取。

所以我添加了realValue获取request.params并将其设置为“goodbye”。

我有以下问题:

msdn上提供的代码是错误的吗?

TextBox控件是否应该表示提交时输入包含的值的Text属性?

1 个答案:

答案 0 :(得分:3)

您应该在

中的页面加载事件上绑定gridview
 if (!IsPostBack)
        {
        }

绑定控件会覆盖值,并且您确实在页面加载中绑定它而不检查回发。