Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向绑定到数据源的datagridview添加复选框?_C#_Vb.net_Checkbox_Datagridview_Datatable - Fatal编程技术网

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

C# 如何向绑定到数据源的datagridview添加复选框?,c#,vb.net,checkbox,datagridview,datatable,C#,Vb.net,Checkbox,Datagridview,Datatable,我是c的新手。我需要在datagridview的选定列中有一个复选框字段,而不是当前显示的False或True文本。此datagridview是数据绑定的,数据是通过读取xml文件获得的。我怎样才能做到这一点 在写入xml文件之前,我就是这么做的 DataTable dtGens = new DataTable(); //creates a new Datatable object for the Gens dtGens.TableName = "Gen Types"; DataColumn

我是c的新手。我需要在datagridview的选定列中有一个复选框字段,而不是当前显示的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());

为了能够将绑定的布尔数据表示为复选框列,需要将DataGridView的AutoGenerateColumns属性设置为false。然后手动添加列,并为必须为复选框列的列设置DataGridViewCheckBoxColumn的实例:

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

绑定到布尔类型的列会自动显示复选框。问题是,数据表的模式信息在写入XML时丢失。 为了防止出现这种情况,可以使用that作为参数,这允许您选择写入模式信息

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

绑定到布尔类型的列会自动显示复选框。问题是,数据表的模式信息在写入XML时丢失。 为了防止出现这种情况,可以使用that作为参数,这允许您选择写入模式信息

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

谢谢但是,我仍然需要将原始数据与这个新的复选框列相关联。简单地添加复选框列对我没有帮助。i、 e如果原始数据设置为真,则应勾选复选框,反之亦然。我已经检查了writexmlstring方法是否确实将所有列转换为字符串,而不管datatable列使用的原始数据类型是什么。谢谢。但是,我仍然需要将原始数据与这个新的复选框列相关联。简单地添加复选框列对我没有帮助。i、 e如果原始数据设置为真,则应勾选复选框,反之亦然。我检查了writexmlstring方法是否将所有列实际转换为字符串,而不管datatable列使用的原始数据类型是什么。