Как удалить столбец из GridView, где DataSource является DataTable, а AutoGenerateColumns имеет значение true? - PullRequest
0 голосов
/ 25 июня 2018

Просто хотел узнать, возможно ли это с C #.

У меня есть GridView. Источником данных GridView является DataTable, сгенерированный из базы данных. AutoGenerateColumn имеет значение True.

Поэтому, когда я пытаюсь следующий код

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;
}

Но он не скрывает заголовок столбца.

У кого-нибудь есть идеи, можно ли удалить столбец?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Попробуйте это: при событии 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
}

На самом деле RowCreated будет вызываться несколько раз при каждом рендеринге GridView.Но это работает

0 голосов
/ 25 июня 2018

Попробуйте это

gridView.columns.RemoveAt(1);
gridView.Databind();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...