[英]how to add a checkbox to a datagridview that is bound to a datasource?
我是C#的新手。 我需要在datagridview的“ selected”列中有一個復選框字段,而不是當前顯示的“ False”(或“ True”)文本。 此datagridview是數據綁定的,並且數據是通過讀取xml文件獲得的。 我該如何實現?
在寫入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];
為了能夠將綁定的布爾數據表示為復選框列,您需要將DataGridView的AutoGenerateColumns屬性設置為false。 然后手動添加列,並為必須為復選框列的列設置DataGridViewCheckBoxColumn的實例:
dataGridViewLoadsDGs.AutoGenerateColumns = false;
...
dataGridViewLoadsDGs.Columns.Add(new DataGridViewCheckBoxColumn());
綁定到布爾類型的列會自動顯示復選框。 問題在於,將DataTable的架構信息寫入XML時會丟失。 為防止這種情況,您可以使用DataSet.WriteXml
的重載,該重載以XmlWriteMode
作為參數,這使您可以選擇寫入模式信息。
feederProject.WriteXml("Generators.xml", XmlWriteMode.WriteSchema);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.