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;
}
更新我!
答案 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文档,尤其是我认为OldValues和NewValues属性可能对您有用。
答案 3 :(得分:1)
我最近遇到了您遇到的同样问题,当我尝试更新网格中的值时。我在 Pageload 中调用了 Gridbind,这是问题的原因。 您是否使用任何函数来绑定 gridview 或类似的东西?
如果您在 page_load 事件中使用该函数,那么您将无法在回发时获得更新的值,因为它会重新绑定您的 gridview,您将丢失您的更新值。