如何访问动态添加的Textbox值ASP.Net

时间:2015-03-24 11:05:35

标签: asp.net gridview

我在ASP.Net WebSite上放置了一个gridview,并像这样动态添加了一列:

protected void gvGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (DataControlRowType.DataRow == e.Row.RowType && e.Row.RowState != DataControlRowState.Edit &&
        (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate))
    {
        TextBox tb = new TextBox();
        tb.ID = "tb";
        tb.Attributes.Add("runat", "server");
        int i = e.Row.Cells.Count;
        i = i - 1;
        e.Row.Cells[i].Controls.Add(tb);
    }
}

填充gridview,并在每行的末尾添加TextBox。当我查看提供给浏览器的HTML代码时,我可以看到每个文本框的ID都是“gv_Items_tb_X”,其中X是当前行索引。 现在我想访问用户在点击按钮时键入的内容。我尝试了下面的代码,但是我得到了一个例外,因为文本框是空的。

protected void btn_UpdateCount_Click(object sender, EventArgs e)
{
    OI_Data_Service.OI_Data_ServiceClient sc = new OI_Data_Service.OI_Data_ServiceClient();
    foreach (GridViewRow row in gv_Items.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            TextBox tb_value = (TextBox)gv_Items.Rows[row.RowIndex].Cells[5].FindControl("gv_Items_tb_" + row.RowIndex);
            sc.UpdateItemOnOpening("1", row.Cells[0].Text, tb_value.Text);
        }
    }
    Response.Redirect("~/okay.aspx");
}

谁能告诉我我做错了什么?

谢谢!

0 个答案:

没有答案