показать / скрыть столбец вида сетки по имени столбца

1

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

Я нашел, как скрыть столбец по имени его столбца. Мне нужно выяснить, как я могу отобразить его с именем столбца.

if (CheckBox3.Checked)
{
    dt.Columns.Remove("Site_name");
    GridView1.DataSource = dt;
    GridView1.DataBind();
}
else
{
    dt.Columns.Show("Site_name"); //I want a code to display, using column name.
}
Теги:
checkbox
datagridviewcolumn

2 ответа

1
Лучший ответ

Ну, я нашел очень простой способ показать и скрыть конкретный столбец, используя check-box при нажатии кнопки.

 if (CheckBox3.Checked == false)
 {
    dt.Columns.Remove("Site_name");
    GridView1.DataSource = dt;
    GridView1.DataBind();
 }
  • 0
    Как это отвечает на ваш вопрос, как показать это снова?
  • 0
    Здесь, когда флажок снят, условие удовлетворяется, и он будет отображать столбец, а когда флажок установлен, это условие не будет выполняться, поэтому столбец не будет отображаться.
Показать ещё 2 комментария
0

Я бы не удалял весь столбец из DataTable, тогда вы не сможете его вернуть, если пользователь хочет его показать (без переустановки всего из базы данных или чего-то еще). Я бы показал/скрыл только эту колонку.

Сначала вам нужно найти индекс столбца. DataControlFieldCollection.IndexOf поддерживает только поиск индекса с помощью DataControlField не с помощью HeaderText. Если вам часто нужно найти индекс GridView -column по его имени, вы можете использовать этот метод расширения:

public static class Extensions
{
    public static int GetColumnIndex(this DataControlFieldCollection columns, string columnName, StringComparison comparison = StringComparison.CurrentCultureIgnoreCase)
    {
        for(int index = 0; index <  columns.Count; index++)
            if(columns[index].HeaderText.Equals(columnName, comparison))
                return index;
        return -1;
    }
}

Теперь вы можете использовать этот код:

int colIndex = GridView1.Columns.IndexOf("Site_name");
GridView1.Columns[colIndex].Visible = isColumnVisible; // acc. to your logic
  • 0
    Есть ли другой способ отображения столбца, как только флажок снят ??
  • 0
    @Jilu: какой путь ты ищешь? Конечно, вы можете изменить SQL, который заполняет DataTable . Вы можете использовать SELECT Col1, Site_name ... или SELECT Col1 ... соответствии с проверенным состоянием. Я подумал, что предпочтительнее было бы предоставить способ, который даже не должен снова загружать таблицу из базы данных.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню