Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Создание столбцов данных из столбцов datagridview

Автор вопроса: codeGENОтветов: 1

У меня есть datagridview со столбцами, которые я создал во время разработки.

Теперь я хочу программно создать таблицу данных с теми же столбцами, что и в представлении сетки.

Я попробовал следующий код.

Dim dataTable As New DataTable
For Each col As DataGridViewColumn In dgDocEntries.Columns
   dataTable.Columns.Add(col)
Next

Это вызывает ошибку компиляции: значение DataGridViewColumn не может быть преобразовано в DataColumn. Очевидно, я пытался приводить типы, но это не сработало.

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

  • Сделайте обратное: создайте DT с нужными столбцами, добавьте данные в таблицу данных, а затем используйте его в качестве источника данных - DGV создаст столбцы из этого. Вам также может быть лучше использовать источник данных List‹T›, если данные не поступают из базы данных и не поступают в нее. Ňɏssa Pøngjǣrdenlarp 27.06.2016
  • @Plutonix Я не могу этого сделать, потому что иногда я устанавливаю источник данных на основе данных, поступающих из базы данных. Извините, что не упомянул об этом изначально. codeGEN 27.06.2016
  • Посмотрите на этот пост, который делает обратное: он создает DGV столбцы из DataTable. Вы должны иметь возможность использовать те же свойства, чтобы добиться обратного. TaW 27.06.2016
  • Создайте ОУ из таблицы БД. Добавляйте или не добавляйте данные, не имеет значения. dgv.DataSource = myDT создаст для вас столбцы в dgv. Ňɏssa Pøngjǣrdenlarp 27.06.2016

datagridview

Ответы

Ответ 1 · рейтинг 1 · TaW

Что-то в этом роде может выполнить эту работу:

void CopyTableColumnsFromDGV(DataGridView dgv, DataTable dt)
{
    foreach (DataGridViewColumn dgvCol in dgv.Columns)
    {
        DataColumn dtCol = new DataColumn(dgvCol.Name, dgvCol.ValueType);
        dtCol.Caption = dgvCol.HeaderText;

        dt.Columns.Add(dtCol);
    }
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы