Привязать типы столбцов DataSet к DataGridViewColumns? - PullRequest
1 голос
/ 17 июня 2011

У меня есть набор данных, поступающих в DataGridView из другого DataGridView ( описано здесь, вопрос решен ).

Теперь я хочу добавить два новых столбца в мой DataSet, один Integer, один Boolean, причем столбец Integer будет иметь тип DataGridViewNumericUpDownColumn (с благодарностью объявлен из этой страницы MSDN ), а логический столбец имеет Тип DataGridViewCheckBoxColumn.

Если я добавлю столбцы непосредственно в DataSet, я не могу указать тип DataGridViewColumn для столбца Integer.

Если я установлю DataSet в качестве DataSource для Data GridView, затем добавлю столбцы в DataGridView, тогда столбцы существуют, но не связаны с DataSet, который не содержит этих столбцы.

Как мне связать эти два столбца с DataGridViewColumns с правильным типом столбца?

1 Ответ

2 голосов
/ 17 июня 2011

Для этого вам нужно установить для свойства AutoGenerateColumns DataGridView значение false и самостоятельно добавить столбцы к DataSet и DataGridView.Столбцы DataGridView имеют свойство DataPropertyName, которое позволяет настроить привязку к базовому DataSource.

. Вы можете установить для свойства AutoGenerateColumns значение true, добавив DataSet в качестве источника данных.для сетки (получая, таким образом, большинство нужных вам столбцов), затем отключите AutoGenerateColumns и добавьте столбцы Integer и Boolean к набору данных и сетке.

Ниже приведен пример кода, связываемый с таблицей данных:

DataTable dataTable = new DataTable();

DataColumn col1 = new DataColumn("Id",typeof(int));
col1.AutoIncrement = true;

DataColumn col2 = new DataColumn("Name",typeof(string));    
DataColumn col3 = new DataColumn("TimeStamp",typeof(DateTime));

dataTable.Columns.AddRange(new DataColumn[] { col1, col2, col3 }); 

dataTable.Rows.Add(null,"John",DateTime.Now);    
dataTable.Rows.Add(null,"Jane",DateTime.Now);         

BindingSource source = new BindingSource();
source.DataSource = dataTable;
dataGridView1.DataSource = source;

dataGridView1.AutoGenerateColumns = false;

DataColumn col4 = new DataColumn("CheckCol", typeof(bool));
dataTable.Columns.Add(col4);

DataGridViewCheckBoxColumn dgvcol1 = new DataGridViewCheckBoxColumn();
dgvcol1.DataPropertyName = "CheckCol";
dgvcol1.Name = "Select";

dataGridView1.Columns.Add(dgvcol1);

Я не реализовал тип столбца NumericUpDown, но он должен работать так же, как показанный тип столбца флажка.

...