我的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后却无法显示出来,请问怎样解决?谢谢啦

解决方案 »

  1.   

    dataGridView1.DataSource = dat.ToList();
    dataGridView1.DataBind();
      

  2.   

    哈哈,谢谢1楼的高手,显示出来啦。
    原来就差了个.ToList啊。接下来还有个问题,就是怎样将“ENUM”的各个节点用一个dataGridView表格显示出来。
    形式如下:value      name
    0          Unprocessed
    1          Processing
    2          Processed怎样写linq语句呢?
      

  3.   

                var dat = from c in XElement.Load("io.xml").Element("IODEF").Elements("ENUMList") select c;
                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;
      

  4.   

    XElement.Load("io.xml").Element("IODEF").Elements("ENUMList")
    为什么运行这句的时候,说“未找到引用对象的实例”?
      

  5.   

    4楼的大虾,我把.Element("IODEF")删掉,变成XElement.Load("io.xml").Elements("ENUMList")错误就没啦。
    但是,取出的dat包含了父节点<ENUMList name="WaferStateEnum">
    所以运行到v.Attribute("value").Value会报错,因为不包含value这个属性。
    请问怎么在dat中去掉父节点<ENUMList name="WaferStateEnum">,只保留子节点ENUM呢?
      

  6.   

               string 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>";
                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
                */
      

  7.   

    问题解决啦,多谢楼上的朋友。 我是按楼上的方法将值取出,然后添加到了DataGridView中,实现了显示的功能。
    遗憾的是,最后也没能实现数据源的绑定。