2015-04-07 42 views
1

我是c#的新手。我需要在datagridview的「selected」列中有一個複選框字段,而不是當前顯示的「False」(或「True」)文本。這個datagridview是數據綁定的,數據是通過讀取一個xml文件獲得的。我怎樣才能做到這一點?如何將複選框添加到綁定到數據源的datagridview?

在寫入xml文件之前,這就是我所做的。

DataTable dtGens = new DataTable(); //creates a new Datatable object for the Gens 

dtGens.TableName = "Gen Types"; 

DataColumn dc1 = new DataColumn("Generator"); 
DataColumn dc2 = new DataColumn("alpha"); 
DataColumn dc3 = new DataColumn("beta"); 
DataColumn dc4 = new DataColumn("circuit breaker"); 
DataColumn dc5 = new DataColumn("description"); 
DataColumn dc6 = new DataColumn("Selected",System.Type.GetType("System.Boolean")); 

dtGens.Columns.Add(dc1); //associates the columns to the dtGens datatable 
dtGens.Columns.Add(dc2); 
dtGens.Columns.Add(dc3); 
dtGens.Columns.Add(dc4); 
dtGens.Columns.Add(dc5); 
dtGens.Columns.Add(dc6); 

DataRow drow; 
for (int i = 0; i < 50; i++) 
{ 
    drow = dtGens.NewRow(); 
    drow["Generator"] = "Gen " + (i + 1).ToString(); 
    drow["alpha"] = 0.0; 
    drow["beta"] = 0.0; 
    drow["circuit breaker"] = 0.0; 
    drow["description"] = "myGen"; 
    drow["Selected"] = false; 
    dtGens.Rows.Add(drow); 

} 

//creates a new DataSet Object that will help write generator data to XML 
DataSet feederProject = new DataSet(); 
feederProject.Tables.Add(dtGens); 
feederProject.WriteXml("Generators.xml"); 
//preview 
DataSet feederProject = new DataSet(); 
feederProject.ReadXml("Generators.xml"); 
dataGridViewLoadsDGs.DataSource = feederProject.Tables[0]; 

回答

2

自動綁定到布爾類型A列顯示的複選框。問題是DataTable的模式信息在寫入XML時會丟失。 爲了防止出現這種情況,您可以使用an overload of DataSet.WriteXml,將XmlWriteMode作爲參數,它允許您選擇寫入架構信息。

feederProject.WriteXml("Generators.xml", XmlWriteMode.WriteSchema); 
2

爲了能夠代表一個綁定的布爾數據,因爲你需要在DataGridView的AutoGenerateColumns屬性設置爲false複選框列。然後手動添加的列和用於必須是複選框列的列設置DataGridViewCheckBoxColumn的實例:

dataGridViewLoadsDGs.AutoGenerateColumns = false; 
... 
dataGridViewLoadsDGs.Columns.Add(new DataGridViewCheckBoxColumn()); 
+0

謝謝。不過,我仍然需要將原始數據關聯到新的複選框列。只需添加複選框Column不會幫助我。即如果原始數據被設置爲「真」,則應該勾選複選框,反之亦然。我已經檢查過,writexml(string)方法實際上將所有列轉換爲字符串,而不管用於數據表列的原始數據類型是什麼。 –

相關問題