繁体   English   中英

如何将复选框添加到绑定到数据源的datagridview?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM