GridView中的TextBox

时间:2011-10-21 23:01:58

标签: c# asp.net gridview ado.net

我想从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);
            }
        }
    }
}

1 个答案:

答案 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;
    }
}