日期:2014-05-18  浏览次数:20416 次

项目开发中遇到的一个问题(各位帮帮忙):GridView 添加一自己创建的TemplateField, 数据绑定以后,怎样取得TemplateField里面的control
环境是这样的:
ASP   页面中有一个按钮和GridView。GridView在数据绑定之前添加了一自己创建的TemplateField,里面有一个Control,   Control里面有一个TextBox.   在数据绑定之后,TextBox可以显示并接受用户的输入。在按钮的onclick事件中想取得GridView中每一列中TextBox的Text值.   通过gridView.rows[行号].cell[列号].FindControl(TextBox的ID)方法时返回值是一空值。

不解,望各位帮帮忙,看没有什么好的解决方法。谢谢大家!

------解决方案--------------------
GridView在数据绑定之前添加了一自己创建的TemplateField----这部分代码是否写在了
if(!IsPostBack)
{}外面!!!!
------解决方案--------------------
gridView.rows[行号].cell[列号].FindControl(TextBox的ID)方法时返回值是一空值。
=============
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
这样就可以了
------解决方案--------------------
诡异了,

你不会是添加到 EditItemTemplate 里面吧 ?

如果是,实际上只有一行处于Edit状态,这一行才能找到 TextBox

foreach (GridViewRow row in GridView1.Rows) {
if(row.RowState == DataControlRowState.Edit) {
TextBox tb = row.FindControl( "MyTextBoxID ") as TextBox;
// string txt = tb.Text;
// ..
}
}
------解决方案--------------------
不要用这种方式去访问,容易产生错误,因为你得确保 TextBox 在对应的 cells 里面,
添加、删除GridView 的列,就得手动同步这里的 列索引

row.cells[列号].FindControl(TextBox的ID)

实际上, 与

row.FindControl(TextBox的ID)

的效果是一样的

------解决方案--------------------
楼主写在什么事件里的?我在绑定事件里e.Row.Cells[1].Text 可以取得
------解决方案--------------------
贴出你的添加Template代码