我的XML文件名是 io.xml, xml的内容如下:
<?xml version="1.0" encoding="gb2312"?>
<IODEF>
<ENUMList name="WaferStateEnum">
<ENUM value="0" name="Unprocessed" />
<ENUM value="1" name="Processing" />
<ENUM value="2" name="Processed" />
<ENUM value="3" name="Processed_With_Alarms" />
<ENUM value="4" name="ProcessAborted" />
</ENUMList>
</IODEF>
我的读取程序如下:
var dat = from c in XElement.Load("io.xml").Elements("ENUMList") select c;
dataGridView1.DataSource = dat;读取dat成功了,但是将dat绑定到dataGridView1后却无法显示出来,请问怎样解决?谢谢啦
<?xml version="1.0" encoding="gb2312"?>
<IODEF>
<ENUMList name="WaferStateEnum">
<ENUM value="0" name="Unprocessed" />
<ENUM value="1" name="Processing" />
<ENUM value="2" name="Processed" />
<ENUM value="3" name="Processed_With_Alarms" />
<ENUM value="4" name="ProcessAborted" />
</ENUMList>
</IODEF>
我的读取程序如下:
var dat = from c in XElement.Load("io.xml").Elements("ENUMList") select c;
dataGridView1.DataSource = dat;读取dat成功了,但是将dat绑定到dataGridView1后却无法显示出来,请问怎样解决?谢谢啦
dataGridView1.DataBind();
原来就差了个.ToList啊。接下来还有个问题,就是怎样将“ENUM”的各个节点用一个dataGridView表格显示出来。
形式如下:value name
0 Unprocessed
1 Processing
2 Processed怎样写linq语句呢?
System.Collections.Generic.Dictionary<string,string> _List=new System.Collections.Generic.Dictionary<string,string>();
foreach (var v in dat)
{
_List.Add(v.Attribute("value").Value, v.Attribute("name").Value);
}
dataGridView1.DataSource = dat;
为什么运行这句的时候,说“未找到引用对象的实例”?
但是,取出的dat包含了父节点<ENUMList name="WaferStateEnum">
所以运行到v.Attribute("value").Value会报错,因为不包含value这个属性。
请问怎么在dat中去掉父节点<ENUMList name="WaferStateEnum">,只保留子节点ENUM呢?
<IODEF>
<ENUMList name=""WaferStateEnum"">
<ENUM value=""0"" name=""Unprocessed"" />
<ENUM value=""1"" name=""Processing"" />
<ENUM value=""2"" name=""Processed"" />
<ENUM value=""3"" name=""Processed_With_Alarms"" />
<ENUM value=""4"" name=""ProcessAborted"" />
</ENUMList>
</IODEF>";
XDocument root = XDocument.Parse(xml);
var Query = from v in root.Element("IODEF").Element("ENUMList").Elements("ENUM")
select new { value = v.Attribute("value").Value, name = v.Attribute("name").Value };
foreach (var v in Query)
{
Console.WriteLine("value={0} name={1}",v.value,v.name);
} /*
value=0 name=Unprocessed
value=1 name=Processing
value=2 name=Processed
value=3 name=Processed_With_Alarms
value=4 name=ProcessAborted
*/
遗憾的是,最后也没能实现数据源的绑定。