2011-06-17 86 views
1

我有一組數據從另一個DataGridView進入DataGridView(described here, question solved)。將DataSet列類型綁定到DataGridViewColumns?

我現在想兩個新列添加到我的數據集,一個整數,一個布爾型DataGridViewNumericUpDownColumn(從this MSDN page感激thieved)的整數列之中,並DataGridViewCheckBoxColumn類型的布爾列之中。

如果我直接添加列到DataSet,我似乎無法指定Integer列的DataGridViewColumn類型。

如果我將DataSet設置爲Data GridView的DataSource,然後將這些列添加到DataGridView中,那麼這些列將存在,但不會綁定回不包含這些列的DataSet。

如何使用正確的列類型將這兩列綁定到DataGridViewColumns?

回答

2

要做到這一點,你需要將DataGridViewAutoGenerateColumns屬性設置爲false,自己在列添加到DataSetDataGridView兩者。 DataGridView列有DataPropertyName屬性,它允許您設置綁定到基礎DataSource

你可以做的是有AutoGenerateColumns屬性設置爲true,添加數據集作爲數據源的網格(因而得到了大多數你需要的列),然後打開的AutoGenerateColumns關閉,並添加整數和布爾列到數據集和網格。

下面是一些示例代碼,針對一個DataTable綁定:

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列類型,但它應該工作得一樣顯示的複選框列類型。

相關問題