【问题标题】:How to delete column from GridView where DataSource is a DataTable and AutoGenerateColumns is true?如何从 GridView 中删除 DataSource 为 DataTable 且 AutoGenerateColumns 为 true 的列?
【发布时间】:2018-12-03 16:17:27
【问题描述】:

只是想知道这是否可以用 C# 实现。

我有一个 GridView。 GridView 的数据源是从数据库生成的数据表。 AutoGenerateColumn 为真。

因此当我尝试以下代码时

gridView.Columns.RemoveAt(1); //I got 12 Columns from the DataTable

我收到以下错误:

异常详细信息:System.ArgumentOutOfRangeException:索引已出 的范围。必须是非负数且小于 收藏。

我不想从 DataTable 中删除它。我想在使用 RenderControl 将 GridView 转换为 html 文本之前删除该列。而且我不希望该列显示在 html 文本中。我也试过这样做:

foreach (GridViewRow row in gv.Rows){
    row.Cells[1].Visible = false;
}

但它不会隐藏列标题。

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

【问题讨论】:

  • @TAHASULTANTEMURI 不。不是重复的。在发布之前,我已经解决了这个问题。该问题没有提到关于 DataSource 作为 Datatable 和 AutoGenerateColumn 属性的任何内容。

标签: c# asp.net gridview datatable


【解决方案1】:

试试这个:在 GridView1.RowDataBound 事件上

GridView1.Columns(0).Visible = False

protected void bla_RowCreated(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[0].Visible = false; // hides the first column
}

实际上,每次 GridView 渲染时,都会调用多次 RowCreated。但它有效

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

    • 已经试过了。您是说尝试使用 gridView.columns(以小写字母 'c' 开头的列)?我尝试了 Databind()。没用。
    猜你喜欢
    • 2011-11-25
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 2015-02-23
    • 2013-11-27
    • 1970-01-01
    相关资源
    最近更新 更多