datagrid 用这么几行  cno(只读),cname, aa(模板列) 编辑,删除,后面两个是按钮列,可是找的时.... e.Item.Cells[index].Controls[0]....说索引超范围,删除不是不是在第四列吗

解决方案 »

  1.   

     e.Item.Cells[4].Controls[0];应该没错哦贴代码来看看
      

  2.   

    索引是从0开始数的所以应该是e.Item.Cells[3].Controls[0];
      

  3.   

      定义datagrid的代码
       DataGrid1.AutoGenerateColumns=false;
    BoundColumn aa=new BoundColumn();
    aa.HeaderText="章节号";
    aa.DataField="Chno";
    aa.ReadOnly=true;
    DataGrid1.Columns.AddAt(0,aa);
    BoundColumn ab=new BoundColumn();
    ab.HeaderText="章节名";
    ab.DataField="Chname";
    DataGrid1.Columns.AddAt(1,ab);
    EditCommandColumn ec=new EditCommandColumn();
    ec.ButtonType=System.Web.UI.WebControls.ButtonColumnType.PushButton;
    ec.EditText="编辑";
    ec.UpdateText="更新";
    ec.CancelText="取消";
    DataGrid1.Columns.AddAt(3,ec);
    ButtonColumn bc=new ButtonColumn();
    bc.ButtonType=System.Web.UI.WebControls.ButtonColumnType.PushButton;
    bc.Text="删除";
    bc.CommandName="Delete";
    DataGrid1.Columns.AddAt(4,bc);
    BoundColumn ca=new BoundColumn();
    ca.DataField="Cname";
    ca.ReadOnly=true;
    ca.Visible=false;
    DataGrid1.Columns.AddAt(5,ca);
       写在ItemCreate中的代码
                         f(e.Item.ItemIndex>=0)     
    {     
    Button   LB=(Button)e.Item.Cells[4].Controls[0];   
    LB.Attributes.Add("onclick",  " return confirm('确定要删除该行数据吗?');");  
    }   
      

  4.   

    我用VS2005做了一个,虽然写法不一样,但是前面列的创建没问题,我估计问题出在写在ItemCreate中的代码。
    e.Item.ItemIndex>=0这个判断是什么意思?判断行标>=0是想排除页眉吗?换e.Item.ItemType == 交替行和普通行吧,VS2003太久没用,不记得怎么写了,很有可能你这个判断没有把页眉排出在外。
      

  5.   

    e.item.rows[e.item.itemindex].cell[0].text;
      

  6.   

    Button  LB=(Button)e.Item.Cells[4].Findcontrol("Button1");
    这样试试。
      

  7.   

    f(e.Item.itemtype==itemtype.item) //注意这个地方,要加上这个判断,我没写全,不记得了,意思是要是数据项的行    
    {    
    Button  LB=(Button)e.Item.Cells[4].Controls[0];  
    LB.Attributes.Add("onclick",  " return confirm('确定要删除该行数据吗?');");