当前位置: 代码迷 >> .NET组件控件 >> 分页控件AspNetPager+GridView+xml怎么实现分页?
  详细解决方案

分页控件AspNetPager+GridView+xml怎么实现分页?

热度:2172   发布时间:2013-02-25 00:00:00.0
分页控件AspNetPager+GridView+xml如何实现分页??
    如题,等大神指教。。
------最佳解决方案--------------------------------------------------------
帮你写了个入门:
网站根目录下建一个test.xml文件:
<学生管理信息系统>
<学生信息>
<学号>10001</学号>
<姓名>张三</姓名>
<年龄>18</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>李四</姓名>
<年龄>20</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>王五</姓名>
<年龄>21</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>赵六</姓名>
<年龄>22</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>刘七</姓名>
<年龄>19</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>严八</姓名>
<年龄>18</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>钟九</姓名>
<年龄>18</年龄>
</学生信息>
<学生信息>
<学号>10001</学号>
<姓名>曹十</姓名>
<年龄>20</年龄>
</学生信息>
</学生管理信息系统>

aspx文件:
	<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="3" onpagechanging="AspNetPager1_PageChanging">
</webdiyer:AspNetPager>
</form>


aspx.cs文件:
	protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindGridView1(1);
}

private void BindGridView1(int pageIndex)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/test.xml"));
DataTable dt = ds.Tables["学生信息"];
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.DataSource = dt.DefaultView;
pds.PageSize = 3;
pds.CurrentPageIndex = pageIndex - 1;
AspNetPager1.RecordCount = dt.Rows.Count;
GridView1.DataSource = pds;
GridView1.DataBind();
}

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
BindGridView1(e.NewPageIndex);
}

AspNetPage控件要拖入页面。
------其他解决方案--------------------------------------------------------
还可以设置缓存依赖项,只要xml文件没有修改过,就从缓存里读取,效率更高:
只要更改BindGridView1方法就行了。
	private void BindGridView1(int pageIndex)
{
if (Cache["学生信息"] == null)
{
string fileName = Server.MapPath("~/test.xml");
DataSet ds = new DataSet();
ds.ReadXml(fileName);
Cache.Insert("学生信息", ds.Tables["学生信息"], new CacheDependency(fileName));
}
DataTable dt = Cache["学生信息"] as DataTable;
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.DataSource = dt.DefaultView;
pds.PageSize = 3;
pds.CurrentPageIndex = pageIndex - 1;
AspNetPager1.RecordCount = dt.Rows.Count;
GridView1.DataSource = pds;
GridView1.DataBind();
}