.net GridView OnRowUpdating 未获取 TextBox 的当前值

标签 .net gridview webforms

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

我打开页面并单击“编辑”,这将设置 editinex 并重新绑定(bind):

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

在第三列中,我更改了值(假设它是“你好”,我将其更改为“再见”)。然后单击“更新”。 (第一列是编辑和删除或更新和取消的按钮列,第二列显示 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 不是“goodbye”;仍然是“你好”

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

所以我添加了获取request.params的actualValue,并将其设置为“再见”。

我有以下问题:

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

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

最佳答案

您应该在页面加载事件上绑定(bind) gridview

 if (!IsPostBack)
        {
        }

绑定(bind)控件会覆盖这些值,并且您确实在页面加载中绑定(bind)了它,而没有检查回发。

关于.net GridView OnRowUpdating 未获取 TextBox 的当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962809/

相关文章:

.NET String [] 运算符返回与 ToString() 不同的内容

.net - 只有数字,数字可能是十进制(正则表达式)

.net - 你能创建你自己的默认 T 其中 T 是你自己的类

javascript - 使用 JQuery 在按钮单击时将行添加到表中

javascript - 测试输入是否为空的最佳方法是什么?

c# - WPF 中的多键绑定(bind)

android - 具有自适应宽度/高度的android中带有方形项目的GridView

asp.net - 使用jQuery在.NET的gridview中进行排序?

android - android中的Gridview布局

asp.net-mvc - IIS 如何识别请求是针对 MVC Controller 还是 Web 表单页面?