2017-09-13 39 views
0

我是新來的asp.net web窗體。gridview與XML數據源

我有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。 但只有名稱的一部分,不是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(); 
} 

我也有過濾數據,EXA。我只想打印這些數據,其ID爲2和4

回答

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();