环境是这样的:
ASP 页面中有一个按钮和GridView。GridView在数据绑定之前添加了一自己创建的TemplateField,里面有一个Control, Control里面有一个TextBox. 在数据绑定之后,TextBox可以显示并接受用户的输入。在按钮的onclick事件中想取得GridView中每一列中TextBox的Text值. 通过gridView.rows[行号].cell[列号].FindControl(TextBox的ID)方法时返回值是一空值。不解,望各位帮帮忙,看没有什么好的解决方法。谢谢大家!
ASP 页面中有一个按钮和GridView。GridView在数据绑定之前添加了一自己创建的TemplateField,里面有一个Control, Control里面有一个TextBox. 在数据绑定之后,TextBox可以显示并接受用户的输入。在按钮的onclick事件中想取得GridView中每一列中TextBox的Text值. 通过gridView.rows[行号].cell[列号].FindControl(TextBox的ID)方法时返回值是一空值。不解,望各位帮帮忙,看没有什么好的解决方法。谢谢大家!
if(!IsPostBack)
{}外面!!!!
=============
1.
不需要指定 Cells 去 FindControl
2。
// 外部 Button
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows) {
TextBox tb = row.FindControl("MyTextBoxID") as TextBox;
// string txt = tb.Text;
// ..
}
}
ASP 页面中有一个按钮和GridView。GridView在数据绑定之前添加了一自己创建的TemplateField,里面有一个Control, Control里面有一个TextBox. 在数据绑定之后,TextBox可以显示并接受用户的输入。在按钮的onclick事件中想取得GridView中每一列中TextBox的Text值. 通过gridView.rows[行号].cell[列号].FindControl(TextBox的ID)方法时返回值是一空值。
_______________________________________________________________________________
原来我也有过类似问题,设断点调试跟踪后发现((Label)gridView.rows[行号].cell[列号].FindControl(TextBox的ID)).Text才有值。楼主不妨自己调试一下
((textbox)gridView.rows[行号].cell[列号].FindControl("TextBox的ID")).text
这样就可以了
2楼:去掉Cells以后问题依旧,row.FindControl( "MyTextBoxID ")返回一个空值。
3楼:我就是在断点跟踪是发现gridView.rows[行号].cell[列号].FindControl(TextBox的ID)的返回值为空的。所以在作类型转换时会谈出异常。
4楼:((textbox)gridView.rows[行号].cell[列号].FindControl( "TextBox的ID ")).text是不能取到值得。在问题里面我已经提到通过gridView.rows[行号].cell[列号].FindControl( "TextBox的ID ")根本返回的是一个null。
if(row.RowState == DataControlRowState.Edit) {
TextBox tb = row.FindControl("MyTextBoxID") as TextBox;
// string txt = tb.Text;
// ..
}
}
添加、删除GridView 的列,就得手动同步这里的 列索引row.cells[列号].FindControl(TextBox的ID)实际上, 与row.FindControl(TextBox的ID)的效果是一样的
TemplateField percentage = new TemplateField();
percentage.HeaderText = "Percentage";
percentage.ItemTemplate = cto;
gvWwMember.Columns.Add(percentage);public class ColumnTextTemplate : ITemplate
{ public void InstantiateIn(Control container)
{
TextBox myTextbox = new TextBox();
myTextbox.ID = "percentage";
container.ID = "PercentageControl";
container.Controls.Add(myTextbox);
} }