Скрытие столбцов GridView в asp.net 2.0

У меня есть gridview, я заполняю его, создавая datatable, заполняя эту таблицу из моего соединения с базой данных, а затем привязывая данные к моей сетке. Я не использую автогенерируемые столбцы, но использую автогенерируемый выбор. Поиск через SO я нашел это предложение.

    gridview.Columns[index].Visible=false;

когда я добавил эту строку, я получаю исключение индекса вне диапазона, когда я нажимаю кнопку в своем веб-приложении.

Я использовал эту строку после того, как привязал свой DataTable к GridView, но я хочу скрыть строку, которая будет использоваться для другой цели, поэтому мне нужно сохранить эту информацию из моего сохраненного процесса.

Я также пробовал вручную добавлять столбцы с опцией <columns>, но он просто добавляет столбцы поверх существующих.

Я немного новичок в веб-программировании, и отключение автогенерируемого выбора - это вариант, но мне это не помогает, поскольку мне пришлось бы потратить много времени на обучение перекодированию функции выбора строки в таблице, которой у меня нет. Все, что я прочитал до сих пор, касалось проблемы автогенерированного столбца, но я не использую его, и если автогенерируемый выбор вызывает ту же проблему. У меня может не быть выбора.


person Michael Cole    schedule 22.03.2012    source источник
comment
До сих пор не ясно, в чем на самом деле ваша проблема.   -  person Tim Schmelter    schedule 23.03.2012
comment
извините за это, я не добавил, что получаю ошибку индекса вне допустимого диапазона. я изменил свой вопрос, чтобы отразить это. мне в основном нужно иметь возможность скрыть строку в gridview. Если все еще неясно, я постараюсь опубликовать часть своего кода.   -  person Michael Cole    schedule 23.03.2012
comment
Прежде чем вы собираетесь редактировать свой вопрос, что означает скрыть строку, следует ли отображать ее клиенту с помощью display:none или не отображать вообще (Visible=false)? Вам нужен доступ к элементам управления в нем на стороне клиента или нет? Обратите внимание, что вы всегда можете получить доступ к элементам управления и их значениям на стороне сервера, даже если они невидимы. Вы также должны показать свой обработчик нажатия кнопки, где вы пытаетесь скрыть эту строку.   -  person Tim Schmelter    schedule 23.03.2012


Ответы (2)


Чтобы скрыть строку, требуется привязка к событию OnRowDataBound и установка стиля.

Посмотрите этот ответ: Скрыть строку gridView в asp.net

person mellodev    schedule 22.03.2012

Для этой конкретной проблемы я не осознавал, что AutoGenerateColumns по умолчанию имеет значение true. Независимо от того, используется ли это по умолчанию или потому, что я использовал элемент управления AutogenerateSelect, я не совсем уверен, но мое исправление заключалось в том, чтобы явно установить для AutogenerateColumns значение False, а затем заполнить сетку из элемента columns в элементе управления. Спасибо mello за ваш ответ, вы дали мне ответ, который мне был нужен.

person Michael Cole    schedule 23.03.2012