2013-08-06 4 views
2

У меня есть DataTable, который я заполнил с помощью SQL-запроса. Затем я заполнил GridViewDataTable.Как скрыть столбец в таблице данных

DataTable table = new DataTable(); 
table.Load(reader); 
gvAktivne.DataSource = table; 
gvAktivne.DataBind(); 

Это прекрасно работает, но теперь я хочу скрыть первую колонку. Когда я добавляю это:

gvAktivne.Columns[0].Visible = false; 

я получаю IndexOutOfRange исключение. У кого-нибудь есть идея, как это исправить?

+0

Не могли бы вы подтвердить, если ваш источник данных имеет действительные Rows.Count данных> 0. –

+0

Удалить столбец из Экземпляр DataTable перед привязкой к GridView. – erdinger

+0

ответил здесь: http://stackoverflow.com/a/3819831/542398 – Chains

ответ

1

Основываясь на заявлении о проблемах, у вас есть AutoGenerateColumns, установленный на true. Это будет проблематично, если вы хотите скрыть столбцы. Вы должны убедиться, что вы выпустили эту строку кода послеDataBind(), и я сделал бы это в OnPreRender.

protected override void OnPreRender(EventArgs e) 
{ 
    base.OnPreRender(e); 
    gvAktivne.Columns[0].Visible = false; 
} 
0

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

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     e.Row.Cells[0].Visible = false; 
} 
0

Это может работать для вас:

DataTable data; 
data.Columns[0].ColumnMapping = MappingType.Hidden; 
Смежные вопросы