public void data_change(object sender,DataGridCommandEventArgs)
{
.......
.......
 
string value=((TextBox)e.Item.Cells[3].Contorls[0]).Text;
....
}其中Cells[3]指的是什么东西??Contorls[0]指的是第一个控件吗??但在datagrid中没用控件啊。高手帮忙

解决方案 »

  1.   

    Cells[3] 指的是当前行的第四列.
    Contorls[0]指的是第一个控件.估计是模板列
      

  2.   

    其实准确的说,((TextBox)e.Item.Cells[3].Contorls[0]).Text这一句的完整意思是:把触发事件的句柄(EventArgs,这里应该是DataGridCommandEventArgs,在入口参数中应该被默认声明为了变量e)所在的行(DataGridItem,也就是e.Item,这里指当前行)中的第4个单元格(Cells数组的下标从0开始,所以是第4个单元格)中的第一个控件(Controls数组的下标也是从0开始,所以自然是找第一个控件),强制转换为TextBox,并取得其中的Text属性的值。这种用法多见于模板列,因为模板列中的一个单元格可能会放多个控件。不过即使不用模板列也是有Contorls[0]对象的,因为默认DataGrid在显示值的时候都是通过一个Literal控件进行显示的(该对象为System.Web.UI.WebControls.Literal类的实体)
      

  3.   

    要了解 datagrid 的内部结构,
    是有行和列的集合构成的。
    其中行集又有单元格构成;
    单元格可以是各种页面元素。
    一般默认为textbox