protected void Button6_Click(object sender, EventArgs e)
    {
        GridView1.Columns[1].Visible = true;
       }
手动从数据绑定了一个dataset,几乎没设置什么事件或属性,好象就设了分页,行头自动生成编辑删除的按钮吧。我想通过点击Button6隐藏第二列。但是会报错:索引超出范围。必须为非负值并小于集合大小。
参数名: index 
想不通啊,以前是gridview配置一个sqldatasource,执行类似的代码没问题。有高手在吗???再问一个,手动代码绑定的gridview如何把列转换成模板列?
我.net新手,别见怪啊…

解决方案 »

  1.   

    你说要搞个for循环
    那如果不配置sqldatasource,怎么可以把gridview的列转换成模板列呢???
      

  2.   

    代码绑定的确会多出许多事来!
    第一个问题Button的click事件隐藏某一列:例如隐藏第1列:
        protected void Button6_Click(object sender, EventArgs e)
        {
            GridView1.HeaderRow.Cells[1].Visible = false;//隐藏表头
            for (int i = 0; i < GridView1.Rows.Count; i++)//隐藏数据行
            {
                GridView1.Rows[i].Cells[1].Visible = false;
            }
        }
      

  3.   

    for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
    {
    ............
    }
    其中GridView1.HeaderRow.Cells.Count就是列的数量
      

  4.   

    动态模板列使用ITemplate
    protected void GridView_RowCreated(object sender, GridViewRowEventArgs e)  
      {  
      if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)  
      {  
      e.Row.Cells[1].Visible = false;  
      e.Row.Cells[2].Visible = false;  
      }  
      }  
      

  5.   

    当你GridView1.Columns[1].Visible = true;隐藏了Columns[1]一列后,Columns.Count就会减一;原先的Columns[2]已经是Columns[1]了