C# 如何从GridView中删除列,其中DataSource是DataTable,AutoGenerateColumns为true?

C# 如何从GridView中删除列,其中DataSource是DataTable,AutoGenerateColumns为true?,c#,asp.net,gridview,datatable,C#,Asp.net,Gridview,Datatable,我只是想知道这在C#中是否可行 我有一个网格视图。GridView的数据源是从数据库生成的数据表。AutoGenerateColumn是正确的 因此,当我尝试以下代码时 gridView.Columns.RemoveAt(1); //I got 12 Columns from the DataTable 我得到以下错误: 异常详细信息:System.ArgumentOutOfRange异常:索引已过期 射程。必须为非负数且小于 收藏 我不想从数据表中删除它。我想在使用RenderControl

我只是想知道这在C#中是否可行

我有一个网格视图。GridView的数据源是从数据库生成的数据表。AutoGenerateColumn是正确的

因此,当我尝试以下代码时

gridView.Columns.RemoveAt(1); //I got 12 Columns from the DataTable
我得到以下错误:

异常详细信息:System.ArgumentOutOfRange异常:索引已过期 射程。必须为非负数且小于 收藏

我不想从数据表中删除它。我想在使用RenderControl将GridView转换为html文本之前删除该列。我不想让这个列显示在html文本中。我也试过这样做:

foreach (GridViewRow row in gv.Rows){
    row.Cells[1].Visible = false;
}
但它不会隐藏列标题

有人知道是否可以删除列吗?

试试这个

gridView.columns.RemoveAt(1);
gridView.Databind();

尝试以下操作:在GridView1.RowDataBound事件上

GridView1.Columns(0).Visible = False


实际上,每次GridView渲染时都会多次调用RowCreated。但它的工作原理是

可能与@TAHASULTANTEMURI Nope重复。不是复制品。在发布这篇文章之前,我已经讨论了这个问题。那个问题并没有提到数据源作为Datatable和AutoGenerateColumn属性的任何内容。已经尝试过了。您是说try with gridView.columns(以小写字母“c”开头的列)?我尝试了数据绑定()。没用。
protected void bla_RowCreated(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[0].Visible = false; // hides the first column
}