我是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的数据。
答案 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();