我是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];
答案 0 :(得分:2)
为了能够将绑定的布尔数据表示为复选框列,您需要将DataGridView的AutoGenerateColumns属性设置为false。然后手动添加列,对于必须是复选框列的列,设置DataGridViewCheckBoxColumn的实例:
dataGridViewLoadsDGs.AutoGenerateColumns = false;
...
dataGridViewLoadsDGs.Columns.Add(new DataGridViewCheckBoxColumn());
答案 1 :(得分:2)
绑定到布尔类型的列会自动显示复选框。问题是,当DataTable写入XML时,它的架构信息会丢失。
为了防止这种情况发生,您可以使用an overload of DataSet.WriteXml
作为参数,XmlWriteMode
允许您选择编写架构信息。
feederProject.WriteXml("Generators.xml", XmlWriteMode.WriteSchema);