gridview with xml datasource

时间:2017-09-13 17:21:54

标签: c# asp.net xml gridview webforms

我是asp.net网络表单的新手。

我有XML,如下所示。

<table>
  <row id="1" name="name1"/>
  <row id="2" name="name2"/>
  <row id="3" name="name3"/>
  <row id="4" name="name3"/>
  <row id="5" name="name3"/>
</table>

我想将这些数据绑定到asp:GridView。 但只是将xml的一部分命名为Id。

我所做的就是这里,但并非全部。 我甚至不知道这是否合适。

protected void Page_Load(object sender, EventArgs e)
{
    var XmlPath = Server.MapPath("~/Data.xml");
    XmlDocument doc = new XmlDocument();
    doc.Load(XmlPath);

    DataTable dt = new DataTable();
    foreach (XmlNode xn in doc.ChildNodes[1])
    {
        string tagName = xn.Name;
        if (!dt.Columns.Contains(tagName))
        {
            dt.Columns.Add(tagName);
        }

    }
    DataRow dr = dt.NewRow();
    foreach (XmlNode xn in doc.ChildNodes[1])
    {
        dr[xn.Name] = xn.InnerText;
    }

    dt.Rows.Add(dr);

    GridView1.DataSource = dt;
    GridView1.DataBind();
}
  

我还必须过滤数据,例如。我想只打印ID为2和4的数据。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用LINQ to XML

XDocument doc = XDocument.Load("~/Data.xml");

var names = from r in doc.Descendants("row")
             select (string)r.Attribute("name");

GridView1.DataSource = names;
GridView1.DataBind();