用LINQ查询XML并绑定给GridView显示
2012-02-23 16:22
435 查看
转载自 http://www.wyjexplorer.cn/Blog/View/A723254D5450AC35.html
前天嘴贱,建议老Y用XML存一个表格然后绑给GridView,本意是用个偷懒的办法快速解决了那个case,结果做的时候没那么方便,或者说直接把GridView绑定到一个XML文件不太好,如果通过DataTable来处理也显得比较麻烦。 比较好的办法其实是绑给业务对象,就和以前ORM一样做,GridView最终绑的是一个List<数据Model>。那么怎么来读取XML呢最方便呢?当然是用LINQ!可以参考我博客上的这篇文章:http://www.wyjexplorer.cn/Blog/View/EC3073A1BDFB9D90.html 今天抽出来单独写了一个Demo示众,3步搞定! 1.搞个XML文件: <?xml version="1.0" encoding="utf-8" ?>
<Contacts>
<Person>
<Id>1</Id>
<Name>Fucker</Name>
<Mobile>13838389438</Mobile>
<Address>No.250, Fucking Road</Address>
</Person>
<Person>
<Id>2</Id>
<Name>Dick</Name>
<Mobile>1234567890123</Mobile>
<Address>No.13, 2B Road, Shit City</Address>
</Person>
<Person>
<Id>3</Id>
<Name>Shitter</Name>
<Mobile>987654321098</Mobile>
<Address>No.38, SB Street</Address>
</Person>
</Contacts>
2.给他创建一个数据模型类: using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for Person
/// </summary>
namespace LinqXMLGridViewDemo
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public string Mobile { get; set; }
public string Address { get; set; }
public Person()
{
//
// TODO: Add constructor logic here
//
}
}
} 3. 页面上拖个GridView,后台代码这样写:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using LinqXMLGridViewDemo;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var query = GetXMLData();
gvContact.DataSource = query;
gvContact.DataBind();
}
private List<Person> GetXMLData()
{
var xDoc = XDocument.Load(Server.MapPath("~/App_Data/Data.xml"));
var query = (from person in xDoc.Descendants("Person")
select new Person()
{
Id = Convert.ToInt32(person.Element("Id").Value),
Name = person.Element("Name").Value,
Mobile = person.Element("Mobile").Value,
Address = person.Element("Address").Value
}).ToList();
return query;
}
}
有图有真相:
![](http://images.cnblogs.com/cnblogs_com/1727050508/201202/201202231622259336.png)
碉堡了~
前天嘴贱,建议老Y用XML存一个表格然后绑给GridView,本意是用个偷懒的办法快速解决了那个case,结果做的时候没那么方便,或者说直接把GridView绑定到一个XML文件不太好,如果通过DataTable来处理也显得比较麻烦。 比较好的办法其实是绑给业务对象,就和以前ORM一样做,GridView最终绑的是一个List<数据Model>。那么怎么来读取XML呢最方便呢?当然是用LINQ!可以参考我博客上的这篇文章:http://www.wyjexplorer.cn/Blog/View/EC3073A1BDFB9D90.html 今天抽出来单独写了一个Demo示众,3步搞定! 1.搞个XML文件: <?xml version="1.0" encoding="utf-8" ?>
<Contacts>
<Person>
<Id>1</Id>
<Name>Fucker</Name>
<Mobile>13838389438</Mobile>
<Address>No.250, Fucking Road</Address>
</Person>
<Person>
<Id>2</Id>
<Name>Dick</Name>
<Mobile>1234567890123</Mobile>
<Address>No.13, 2B Road, Shit City</Address>
</Person>
<Person>
<Id>3</Id>
<Name>Shitter</Name>
<Mobile>987654321098</Mobile>
<Address>No.38, SB Street</Address>
</Person>
</Contacts>
2.给他创建一个数据模型类: using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for Person
/// </summary>
namespace LinqXMLGridViewDemo
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public string Mobile { get; set; }
public string Address { get; set; }
public Person()
{
//
// TODO: Add constructor logic here
//
}
}
} 3. 页面上拖个GridView,后台代码这样写:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using LinqXMLGridViewDemo;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var query = GetXMLData();
gvContact.DataSource = query;
gvContact.DataBind();
}
private List<Person> GetXMLData()
{
var xDoc = XDocument.Load(Server.MapPath("~/App_Data/Data.xml"));
var query = (from person in xDoc.Descendants("Person")
select new Person()
{
Id = Convert.ToInt32(person.Element("Id").Value),
Name = person.Element("Name").Value,
Mobile = person.Element("Mobile").Value,
Address = person.Element("Address").Value
}).ToList();
return query;
}
}
有图有真相:
![](http://images.cnblogs.com/cnblogs_com/1727050508/201202/201202231622259336.png)
碉堡了~
相关文章推荐
- linq to xml查询绑定GridView
- Linq查询绑定给GridView,提示 数据源不支持服务器端的数据分页.
- .NET 使用GridView控件绑定数据源其他操作(查询相关数据,而不是显示全数据)
- Linq查询绑定给GridView,提示 数据源不支持服务器端的数据分页.
- 将xml绑定到gridview,及xml节点查询的selectNodes怎么实现多条件查询
- Map Web Control框选查询绑定到GridView1,为什么没有显示?
- 将xml绑定到gridview,及xml节点查询的selectNodes怎么实现多条件查询
- GridView1查询出没有记录的时候GridView1就很不显示,很难看,可以让GridView1去绑定一张空表没有记录的表
- Linq to XML 排序,分页,多节点查询数据
- 如何在Gridview绑定的记录前添加一列显示序号
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- LINQ TO XML查询结果null 解决方法
- GridView动态绑定列(据条件显示某些列)
- 实验C JavaScript DOM操作XML显示查询添加删除
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- sharepoint中查询列表绑定gridview
- [代码]使用LINQ的查询结果填充XML树(LINQ to XML)
- mongoDB 多重数组查询(AngularJS绑定显示 nodejs)
- invalid bound statement (not found),大概应该是报mapper.xml中的sql查询和mapper.java中的方法没有绑定成功!
- XmlDocument和LINQ to XML两种方式对xml的创建、查询