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

问一个gridView隐藏列的问题?困扰我一段时间了
protected void Button6_Click(object sender, EventArgs e)
  {
  GridView1.Columns[1].Visible = true;
  }


手动从数据绑定了一个dataset,几乎没设置什么事件或属性,好象就设了分页,行头自动生成编辑删除的按钮吧。

我想通过点击Button6隐藏第二列。但是会报错:索引超出范围。必须为非负值并小于集合大小
参数名: index 
想不通啊,以前是gridview配置一个sqldatasource,执行类似的代码没问题。

有高手在吗???

再问一个,手动代码绑定的gridview如何把列转换成模板列?
我.net新手,别见怪啊…


------解决方案--------------------
代码绑定的确会多出许多事来!
第一个问题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;
}
}

------解决方案--------------------
for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
{
............
}
其中GridView1.HeaderRow.Cells.Count就是列的数量
------解决方案--------------------
动态模板列使用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;
}
}

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