我想从GridView中的TextBox获取Text属性。此TextBox包含来自我的数据库的一些数据。当我更改此数据时,我想在我的数据库中进行更新。
但是当我搜索TextBox的Text时,他得到了来自我的数据库的旧值,而不是我现在放的值。
如何获取我在TextBox中编写的实际数据,而不是来自我的数据库?
protected void VerifyPriority()
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow RowView = (GridViewRow)GridView1.Rows[i];
TextBox txt = (TextBox)GridView1.Rows[i].FindControl("txtPriority");
if (txt != null)
{
if (txt.Text != this.changes[i])
{
this.UpdatePriority(this.codigo[i], txt.Text);
}
}
}
}
答案 0 :(得分:5)
很可能你是在每次回发后重新绑定GridView而不是绑定它一次并让ViewState持久保存数据。如果每次回发页面时绑定GridView,您所做的任何更改都将被删除并替换为数据库中的信息。
仅在第一页加载时绑定(在这种情况下):
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GridView1.DataSource = GetSomeData();
GridView1.DataBind();
}
}
在完成上述代码后,您应该能够从TextBox中获取正确的数据:
foreach (GridViewRow row in GridView1.Rows)
{
TextBox txt = row.FindControl("TextBox1") as TextBox;
if (txt != null)
{
string value = txt.Text;
}
}