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

GRIDVIEW的一个疑问~速度揭贴~
((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text
在GridView1_RowUpdating能用。
而在GridView1_RowEditing里不能用。

是不是GridView1_RowEditing里就不能设置编辑的TEXTBOX了?
在GridView1_RowEditing里如何访问TEXTBOX~

------解决方案--------------------
RowEditing是GridView 控件进入编辑模式之前的事件,那时GridView1.Rows[e.RowIndex].Cells[4].Controls[0])还不是TextBox,所以不能访问

GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).ToString()
看看上面这句打印出来是什么?根据其类型进行转换。


------解决方案--------------------
是不是GridView1_RowEditing里就不能设置编辑的TEXTBOX了?
============>
当然可以编辑TextBox,但要注意引用TextBox的顺序
一般在RowEditing事件里,会有这样的代码:
GridView1.EditIndex = e.NewEditIndex; //所选中行设置为编辑行
BindData(); //重新绑定数据
而引用编辑行中的TextBox,要在重新绑定数据(BindData())之后。在这之前引用为null,因为根本不存在TextBox

正确代码如下:
GridView1.EditIndex = e.NewEditIndex;
BindData();
((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text