Как скрывать и отображать любой столбец, независимо от первого столбца?
Есть datagridview с созданными вручную столбцами. (с программным добавлением сто тоже самое)
При загрузке формы происходит sql запрос в базу MS Access и последующее добавление в datagridview. С этим все хорошо, тут вопросов нет.
Хочу чтоб во время пользования программы, можно было просто скрывать некоторые столбцы в datagridview посредством checkbox.
Проблема в том, что нельзя просто взять и скрыть, например, 3 столбец, при этом, не трогая первый столбец.
Для этого нужно сначала скрыть самый первый столбец и после этого уже можно скрывать остальные. Точно также и с обратным их отображением.
как сделать так, чтобы можно было скрывать и отображать любой столбец, независимо первого столбца?
sql запрос
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Tutors.mdb"; OleDbConnection connection = new OleDbConnection(connectionString); connection.Open(); string query = "SELECT Факультет.[Название факультета], Группа.[Номер группы], Тьюторы.ФИО, Тьюторы.Факультет, Тьюторы.Группа, Тьюторы.Курс, Тьюторы.[Номер телефона]" +"FROM(Факультет INNER JOIN Группа ON Факультет.[ID Факультета] = Группа.[ID факультета]) INNER JOIN Тьюторы ON Группа.[ID группы] = Тьюторы.[ID Группы первокурсников]"; OleDbCommand oleDbCommand = new OleDbCommand(query, connection); OleDbDataReader reader = oleDbCommand.ExecuteReader(); if (reader.HasRows == false) < MessageBox.Show("Данные не найдены!", "Ошибка"); Close(); >else < while (reader.Read()) < dataGridView1.Rows.Add(reader["Название факультета"], reader["Номер группы"], reader["ФИО"], reader["Факультет"], reader["Группа"], reader["Курс"], reader["Номер телефона"]); >> reader.Close(); connection.Close();
обработчики событий checkBox’ов
private void checkBoxFacultyFresman_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[0].Visible = true; >else dataGridView1.Columns[0].Visible = false; > private void checkBoxGroupFreshman_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[1].Visible = true; >else dataGridView1.Columns[1].Visible = false; > private void checkBoxNameTutor_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[2].Visible = true; >else dataGridView1.Columns[2].Visible = false; > private void checkBoxFacultyTutor_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[3].Visible = true; >else dataGridView1.Columns[3].Visible = false; > private void checkBoxGroupFaculty_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[4].Visible = true; >else dataGridView1.Columns[4].Visible = false; > private void checkBoxCourseTutor_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[5].Visible = true; >else dataGridView1.Columns[5].Visible = false; > private void checkBoxNamberTel_CheckedChanged(object sender, EventArgs e) < if (checkBoxFacultyFresman.Checked == true) < dataGridView1.Columns[6].Visible = true; >else dataGridView1.Columns[6].Visible = false; >
Как избавиться от стрелки в RowHeader DataGridView C#?
Всем привет!
Мне хочется сделать аккуратный тонкий столбец заголовков строк в datagridе,
но мешает стрелка. С ней столбец получается слишком широкий. Может кто-то сталкивался с такой проблемой, помогите разобраться 🙂
- Вопрос задан более трёх лет назад
- 1146 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
WinForms? Вот эта стрелка? joxi.ru/82QNbWdixROBAd
Если да, то свойство RowHeadersVisible вас спасет.
А что бы оставить стобик, но скрыть стрелки:
dataGridView1.RowHeadersDefaultCellStyle.Padding = new Padding(dataGridView1.RowHeadersWidth);
Ответ написан более трёх лет назад
nubic @nubic Автор вопроса
мне нужен RoHeader, но без стрелки в нем) вот в чем проблема
Добавил решение в свой ответ.
nubic @nubic Автор вопроса
Артем: все равно что-то не то) теперь текст не видно. ( придется смириться с толстым столбцом похоже :/
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +1 ещё
Визуал студио медленно работает почему?
- 1 подписчик
- 6 часов назад
- 35 просмотров
Практическое руководство. Сокрытие столбцов элемента управления DataGridView в Windows Forms
Иногда требуется показать только некоторые из столбцов, доступных в элементе управления DataGridView Windows Forms. Например, руководителям может потребоваться показать столбец с заработной платой сотрудников, в то время как от других пользователей его нужно скрыть. Или может возникнуть необходимость привязать элемент управления к источнику данных, содержащему много столбцов, только часть из которых нужно показать. В этом случае столбцы, которые не следует показывать, обычно не скрываются, а удаляются.
В элементе управления DataGridView значение свойства Visible столбца определяет, будет ли этот столбец показан.
Как скрыть столбец программным образом
- Установите свойство DataGridViewColumn.Visible в значение false . Чтобы скрыть столбец CustomerID , создаваемый автоматически во время привязки к данным, поместите приведенный ниже пример кода в обработчик событий DataBindingComplete.
this.dataGridView1.Columns["CustomerID"].Visible = false;
Me.dataGridView1.Columns("CustomerID").Visible = False
Компиляция кода
Для этого примера требуются:
- элемент управления DataGridView с именем dataGridView1 , содержащий столбец с именем CustomerID ;
- ссылки на сборки System и System.Windows.Forms.
См. также
- DataGridView
- DataGridViewColumn.Visible
- Базовые характеристики столбцов, строк и ячеек элемента управления DataGridView в Windows Forms
- Практическое руководство. Удаление автоматически сгенерированных столбцов элемента управления DataGridView в Windows Forms
- Практическое руководство. Изменение порядка столбцов элемента управления DataGridView в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Практическое руководство. Удаление или сокрытие столбцов элемента управления DataGridView в Windows Forms
Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.
Вы можете программным способом удалить или скрыть столбцы в элементе управления DataGrid Windows Forms с помощью свойств и методов объектов GridColumnStylesCollection и DataGridColumnStyle (которые являются членами класса DataGridTableStyle).
Удаленные или скрытые столбцы по-прежнему существуют в источнике данных, к которому привязана сетка, и доступ к ним по-прежнему осуществляется программным способом. Они просто больше не видны в сетке данных.
Если приложение не обращается к определенным столбцам данных и вы не хотите, чтобы они отображались в сетке данных, их, вероятно, не нужно включать в источник данных.
Удаление столбца из DataGrid программным способом
- В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
- Задайте для свойства DataGridTableStyle.MappingName таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере используется свойство DataGrid.DataMember, которое уже должно быть задано.
- Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
- Вызовите метод RemoveAt коллекции GridColumnStyles элемента DataGrid, указав индекс столбца для удаления.
' Declare a new DataGridTableStyle in the ' declarations area of your form. Dim ts As DataGridTableStyle = New DataGridTableStyle() Sub DeleteColumn() ' Set the DataGridTableStyle.MappingName property ' to the table in the data source to map to. ts.MappingName = DataGrid1.DataMember ' Add it to the datagrid's TableStyles collection DataGrid1.TableStyles.Add(ts) ' Delete the first column (index 0) DataGrid1.TableStyles(0).GridColumnStyles.RemoveAt(0) End Sub
// Declare a new DataGridTableStyle in the // declarations area of your form. DataGridTableStyle ts = new DataGridTableStyle(); private void deleteColumn() < // Set the DataGridTableStyle.MappingName property // to the table in the data source to map to. ts.MappingName = dataGrid1.DataMember; // Add it to the datagrid's TableStyles collection dataGrid1.TableStyles.Add(ts); // Delete the first column (index 0) dataGrid1.TableStyles[0].GridColumnStyles.RemoveAt(0); >
Скрытие столбца в DataGrid программным способом
- В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
- Задайте для свойства MappingNameDataGridTableStyle таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере кода используется свойство DataGrid.DataMember, которое уже должно быть задано.
- Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
- Скройте столбец, задав для свойства Width значение 0 и указав индекс столбца для скрытия.
' Declare a new DataGridTableStyle in the ' declarations area of your form. Dim ts As DataGridTableStyle = New DataGridTableStyle() Sub HideColumn() ' Set the DataGridTableStyle.MappingName property ' to the table in the data source to map to. ts.MappingName = DataGrid1.DataMember ' Add it to the datagrid's TableStyles collection DataGrid1.TableStyles.Add(ts) ' Hide the first column (index 0) DataGrid1.TableStyles(0).GridColumnStyles(0).Width = 0 End Sub
// Declare a new DataGridTableStyle in the // declarations area of your form. DataGridTableStyle ts = new DataGridTableStyle(); private void hideColumn() < // Set the DataGridTableStyle.MappingName property // to the table in the data source to map to. ts.MappingName = dataGrid1.DataMember; // Add it to the datagrid's TableStyles collection dataGrid1.TableStyles.Add(ts); // Hide the first column (index 0) dataGrid1.TableStyles[0].GridColumnStyles[0].Width = 0; >
См. также
- Практическое руководство. Изменение данных, отображаемых во время выполнения, в элементе управления DataGrid в Windows Forms
- Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.