Перейти к содержимому

Datagridview c как убрать первый столбец

  • автор:

Как скрывать и отображать любой столбец, независимо от первого столбца?

Есть 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#

  • 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 программным способом

  1. В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
  2. Задайте для свойства DataGridTableStyle.MappingName таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере используется свойство DataGrid.DataMember, которое уже должно быть задано.
  3. Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
  4. Вызовите метод 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 программным способом

  1. В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
  2. Задайте для свойства MappingNameDataGridTableStyle таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере кода используется свойство DataGrid.DataMember, которое уже должно быть задано.
  3. Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
  4. Скройте столбец, задав для свойства 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, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *