【发布时间】:2016-05-11 07:58:20
【问题描述】:
我想在 GridView 的每个单元格中使用 TextBox 动态添加行和列。我已经成功地做到了。但问题是当我单击按钮时,我无法读取 TextBox 的值。
<asp:GridView runat="server" ID="gv" OnRowDataBound="gv_OnRowDataBound"></asp:GridView>
在网格中动态添加行和列:
protected void btnGenerate_OnClick(object sender, EventArgs e)
{
int rowsCount = Convert.ToInt32(tbxRow.Text);
int colsCount = Convert.ToInt32(tbxCol.Text);
DataTable dt=new DataTable();
for(int col=0;col<colsCount;col++)
{
dt.Columns.Add("D-" + col, typeof (int));
}
for (int i = 0; i < rowsCount; i++)
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
gv.DataSource = dt;
gv.DataBind();
}
这是我将文本框添加到 GridView 的代码:
protected void gv_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
TextBox txt = new TextBox();
txt.ID = "tbx" + i;
e.Row.Cells[i].Controls.Add(txt);
}
}
}
我试过这个来获取TextBox的值,但它总是显示为null:
protected void btnSave_OnClick(object sender, EventArgs e)
{
foreach (GridViewRow row in gv.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
for (int i = 0; i < row.Cells.Count; i++)
{
TextBox tb = (TextBox) row.Cells[i].FindControl("tbx" + i);
}
}
}
}
【问题讨论】: