string colvalue = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
这中间cells,control,都是什么意思啊?

解决方案 »

  1.   

    你是不是用了gridview控件?
      

  2.   

    string colvalue = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
    //当前行第四列第一个控件Item 当前行
    CELL 行中的一列
    CONTROL行中的一列的控件
      

  3.   

    cells表示列
    Cells[3]就是第四列
    Controls表示控件
    Cells[3].Controls[0]的意思就是e.Item行的第四列中的第一个控件
    明白不
      

  4.   

    cell就是你选择那行需要操作的模板列;
    而在这个列中可能有几个control,
    所以就用control(index)来进行选择。
    等同:
    e.Item.Cells[3].FindControl("ControlID") as TextBox 
      

  5.   

    Cells[3].Controls[0]第三列第一个控件
      

  6.   

    首先呢,有个和你这个问题有点像的帖子,可以参考这里:
    =((TextBox)e.Item.Cells[3].Contorls[0]).Text从你说的使用的是DataGrid的情况来看,e看来应该是事件句柄DataGridCommandEventArgs,这个对象中有一个叫做Item的成员,描述的是发生事件时DataGrid所在的行(说得再明白点,比如在执行DataGrid.ItemDataBind事件时,这个e.Item就是指正在进行数据绑定的行)。DataGrid中一行可能有若干个单元格,因此e.Item中具有一个Cells数组,用来描述从左至右的各个单元格对象,那么e.Item.Cells[3]就是指触发事件的行的第4个单元格,因此数组的下标从0开始。一个单元格里可能有一个以上的控件,比如你经常会看到点击DataGrid自带的行编辑按钮时每个单元格都会变成文本框,这就说明一个单元格里至少有两个控件,一个用来显示,一个是文本框,因此每个单元格对象(Cell)中也会有一个控件数组——当然这些是DataGrid控件封装起来的,不过我们可以访问每个单元格的第1个控件,即Cell.Controls[0]来访问用来显示的控件。
    最后把找到的控件强制转化为TextBox的对象,即(TextBox)e.Item.Cells[3].Controls[0],然后访问这个TextBox中的文本的值,即((TextBox)e.Item.Cells[3].Controls[0]).Text。这么说明白了吧……