我现在有一个datatable里面有一些数据,已经绑定在gridview中,之后我用这段程序绑定textbox控件: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 1; i <= dtTable.Columns.Count - 1; i++)
{
TextBox txt = new TextBox();
txt.ID = "a" + i + e.Row.RowIndex;
txt.Width = 200;
e.Row.Cells[i+1].Controls.Add(txt);
}
}
}
现在想在button的click事件中去gridview单元格中的textbox的值,可是 取不到,不知道是什么问题 求大神指教,取值代码如下:
foreach (GridViewRow j in GridView1.Rows)
{
for (int i = 1; i < GridView1.Rows[j.RowIndex].Cells.Count; i++)
{
string x = "a" + i + j.RowIndex;
TextBox tb = (TextBox)j.FindControl(x);
if (tb.Text == "")
{
num = 0;
}
else
{
num = Convert.ToInt32(tb.Text);
}
}
}
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 1; i <= dtTable.Columns.Count - 1; i++)
{
TextBox txt = new TextBox();
txt.ID = "a" + i + e.Row.RowIndex;
txt.Width = 200;
e.Row.Cells[i+1].Controls.Add(txt);
}
}
}
现在想在button的click事件中去gridview单元格中的textbox的值,可是 取不到,不知道是什么问题 求大神指教,取值代码如下:
foreach (GridViewRow j in GridView1.Rows)
{
for (int i = 1; i < GridView1.Rows[j.RowIndex].Cells.Count; i++)
{
string x = "a" + i + j.RowIndex;
TextBox tb = (TextBox)j.FindControl(x);
if (tb.Text == "")
{
num = 0;
}
else
{
num = Convert.ToInt32(tb.Text);
}
}
}
你把这个事件在page_load中调用下,再看看能否取到值,注意不要写到!page.ispostback里面
GridView1_RowDataBound(null,null);
e.Row.RowIndex搞个自增变量代替下
if (!page.ispostback)
{}
else
{
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for (int i = 1; i <= dtTable.Columns.Count - 1; i++)
{
TextBox txt = new TextBox();
txt.ID = "a" + i + e.Row.RowIndex;
txt.Width = 200;
e.Row.Cells[i+1].Controls.Add(txt);
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
SQLiteData md = new SQLiteData();
md.ExecuteReader("select * from city limit 10");
GridView1.DataSource = md.Reader;
GridView1.DataBind();
md.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox tb = new TextBox() { ID = "tb" + e.Row.RowIndex };
e.Row.Cells[0].Controls.Add(tb);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
TextBox tb = row.FindControl("tb" + row.RowIndex) as TextBox;
Response.Write(tb.Text + "<br/>");
}
}