VB.NET - Добавление столбцов в DataGridView в списке - PullRequest
1 голос
/ 04 января 2012

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

Проблема заключается в следующем: Когда пользователь добавляет первую таблицу, запускается следующий код:

dataGridList(dataGridList.Count -1).Clear()
dataGridList(dataGridList.Count -1).Add(NameDataGridViewTextBoxColumn)

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

«Предоставленный столбец уже принадлежит представлению таблицы данных»

Я думаю, что это странно, поскольку я получаю доступ к разным данным DataGridView, верно?

Смысл всего этого в том, чтобы иметь возможность просматривать разные столбцы во всех DataGridViews в зависимости от выбора пользователя.

Надеюсь, вы сможете мне помочь.

Ответы [ 3 ]

5 голосов
/ 04 января 2012

Как вы определяете, что такое NameDataGridViewTextBoxColumn? Я имею в виду, как создается ваш список textBoxColumns, которые вы упомянули?

Вероятно, вам действительно нужно создать New DataGridViewTextBoxColumn для добавления с соответствующим набором свойств.

Вы можете добавить столбец в код примерно так:

        Dim col As New DataGridViewTextBoxColumn
        col.DataPropertyName = "PropertyName"
        col.HeaderText = "SomeText"
        col.Name = "colWhateverName"
        DataGridView1.Columns.Add(col)

Обязательно установите соответствующее имя свойства и т. Д. Вы также можете скопировать его из существующего столбца ...

col.DataPropertyName = NameDataGridViewTextBoxColumn.DataPropertyName

Например.

0 голосов
/ 22 ноября 2016

Вот что я сделал.Я выбираю столбец с помощью поиска в БД или таблицы, затем объединяю оба в один DGV.Как это.Я просто играл с ним, и теперь он работает, чтобы правильно выровнять строки.Это немного не по теме, так как это БД, но я предполагаю, что подобные методы упростят добавление данных из других источников.

tempAdt = New OleDbDataAdapter("SELECT firstName FROM Employees",connector)
tableCommand = New OleDbCommandBuilder(tempAdt)

tableAdaptor = New OleDbDataAdapter("SELECT * FROM userTable", connector)
tableCommand = New OleDbCommandBuilder(tableAdaptor)

Dim startTable2 As New DataTable

tempAdt.Fill(startTable2)
tableAdaptor.Fill(startTable2)

В основном я использовал два разных адаптера, и они будут перечислять их рядом в DGV

0 голосов
/ 04 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...