日期:2014-05-18  浏览次数:21283 次

急:怎样读取XML数据并绑定到DataGridView
我有一段XML文件格式如下:
XML code

<TaskList>
     <Task>
           <TaskName>测试任务一</TaskName>
           <TaskContent>测试任务内容一</TaskName>
           <TaskBeginDate>2009-12-30 15:00</TaskBeginDate>
           <TaskEndDate>2009-12-30 17:30</TaskEndDate>
           <TaskStatus>False</TaskStatus>
     </Task>
     <Task>
           <TaskName>测试任务二</TaskName>
           <TaskContent>测试任务内容二</TaskName>
           <TaskBeginDate>2009-12-30 15:00</TaskBeginDate>
           <TaskEndDate>2009-12-30 17:30</TaskEndDate>
           <TaskStatus>False</TaskStatus>
     </Task>

</TaskList>


我想把这个XML文件读取出来绑定到DataGridView。

------解决方案--------------------
读XML文件写入DataSet并绑定到DatagirdView
C# code

          priviate void BindData()

         {   //绑定控件的数据
            DataSet ds = XMLFillDataSet("FcstTypeDescription.xml");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = ds.Tables[0].TableName;
           }  


        /// <summary>
        /// 读XML文件,并填入DataSet
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        private DataSet XMLFillDataSet(string file)
        {  

           //创建DataTable对象dt
            DataTable dt = new DataTable("fcstXML");
            //创建列
            dt.Columns.Add(new DataColumn("num", typeof(int)));
            dt.Columns.Add(new DataColumn("center", typeof(string)));
            dt.Columns.Add(new DataColumn("bwtype", typeof(string)));
            dt.Columns.Add(new DataColumn("fcstType", typeof(string)));
            dt.Columns.Add(new DataColumn("chnname", typeof(string)));
            dt.Columns.Add(new DataColumn("description", typeof(string)));
            dt.Columns.Add(new DataColumn("color", typeof(string)));

            XmlDocument xmldoc = new XmlDocument();
            try
            {   ///导入xml文档
                xmldoc.Load("FcstTypeDescription.xml");
                XmlNode node = xmldoc.SelectSingleNode("ctDataset");
                if (node == null)
                {
                    return (DataSet)null;
                }
                ///读取<centerInfo>的结点
                foreach (XmlNode xnode in xmldoc.SelectNodes("ctDataset/centerInfo"))
                {   ///创建一个新行
                    DataRow row = dt.NewRow();
                    ///读取结点数据,并填充数据行
                    foreach (XmlNode xcnode in xnode.ChildNodes)
                    {
                        row[xcnode.Name] = xcnode.InnerText;
                    }
                    ///添加该数据行
                    dt.Rows.Add(row);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            ///创建DataSet对象ds
            DataSet ds = new DataSet("XMLfcstData");
            ds.Tables.Add(dt);
            return (ds);
        }

------解决方案--------------------
Dataset ds=new DataSet();
ds.ReadXml("test.xml");
datagridview1.DataSource=ds;
如果要定义列名,参照楼上
------解决方案--------------------
直接用DataSet实例的一个函数就可以了
ds.ReadXML(string path),path就是xml文件保存的路径了,这样就可以自动将xml中的数据读取到ds中。