问大家一下,这个问题就是我前端只有这样的一个GridView控件然后后台动态生成一些列,这些列里面有文本框,然后我想在后台读取到文本框输入的内容,但是我用了FindControl这个方法找不到我动态生成的列名
<cc:PagingGridView ID="PagingGridView2" Width="100%" runat="server"
PageSize="10" AllowPaging="false" CssClass="grid_view" OnBindDataSource="PagingGridView1_BindDataSource" OnRowDataBound="PagingGridView1_RowDataBound">
<EmptyDataTemplate>
无相关数据
</EmptyDataTemplate>
<Columns>
</Columns>
<RowStyle CssClass="td1" />
<HeaderStyle CssClass="td_bthead" />
<PagerStyle CssClass="td0" />
<AlternatingRowStyle CssClass="td2" />
</cc:PagingGridView>
protected void btnSave_Click(object sender, EventArgs e)
{
////txtZb.Text = "";
//string jszb = "";
//double result = 0;
for (int i = 0; i < PagingGridView2.Rows.Count; i++)
{
//for (int j = 2; j < 4; j++)
//{
string name = (PagingGridView2.Rows[i].Cells[j]).Text;
TextBox tb = PagingGridView2.FindControl("txtZb") as TextBox;
TextBox Text1 = (TextBox)PagingGridView2.Rows[2].Cells[2].FindControl("txtZb");
//// if (Text1.Text != "" || Text1.Text != null)
//{
// //double x = Convert.ToDouble(Text1.Text) * 0.5;
// //result = x+result;
// //jszb = Convert.ToString(result);
//}
}
//}
}
protected void PagingGridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex == -1) return;
for (int i = 2; i < PagingGridView2.RecordCount + 1; i++)
{
TableCell tc = e.Row.Cells[i];
TextBox tb = new TextBox();
tb.ID = "txtZb"+i.ToString();
//+ "y" + e.Row.RowIndex.ToString();
tc.Controls.Add(tb);
}
//for (int i = 2; i < PagingGridView2.RecordCount + 1; i++) {
//TextBox txt=Page.FindControl("txtZb"+i.ToString()) as TextBox;
//string result = txt.Text;
//}
if (e.Row.RowType == DataControlRowType.DataRow)
{
try
{
(e.Row.FindControl("btnSp") as Button).Visible = pPageType == "sp1";
}
catch (Exception ex)
{
//PageHelper.MessageBox(this, "PagingGridView1_RowDataBound:" + ex.Message);
}
}
}