RowUpdating GridView显示旧值

时间:2011-12-29 18:14:15

标签: c# asp.net gridview

enter image description here

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    GridView1.DataBind();

}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    GridView1.EditIndex = -1;
    GridView1.DataBind();
}

行编辑和行取消编辑工作正常;但是当我在更改文本框中的值后按更新时,它会显示旧值而不是我已更改的值。以下是行更新事件代码。

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

dao.AridNumber = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
dao.FirstName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
dao.LastName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text;

}

更新我!

4 个答案:

答案 0 :(得分:2)

我认为您需要在方法的最后一次再次绑定数据,以便向您显示相应的结果。

希望这有助于!!

答案 1 :(得分:2)

检查你的标记你正在使用Bind()而不是Eva()将值绑定到TextBox。

以下是一个例子:

<EditItemTemplate>
    <asp:TextBox ID="someId" runat="server" Text='<%# Bind("SomeField") %>'></asp:TextBox>
</EditItemTemplate>

答案 2 :(得分:1)

你需要在最后调用GridView1.DataBind():

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

      dao.AridNumber = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
      dao.FirstName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
      dao.LastName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text;

      GridView1.DataBind();
}

修改

您可能需要查看RowUpdating文档,尤其是我认为OldValuesNewValues属性可能对您有用。

答案 3 :(得分:1)

我最近遇到了您遇到的同样问题,当我尝试更新网格中的值时。我在 Pageload 中调用了 Gridbind,这是问题的原因。 您是否使用任何函数来绑定 gridview 或类似的东西?

如果您在 page_load 事件中使用该函数,那么您将无法在回发时获得更新的值,因为它会重新绑定您的 gridview,您将丢失您的更新值。