Asp.net分页控件动态加载
在asp.net中动态加载控件比较简单,这里我讲得是对用户控件的加载,比较典型的就是被加载的用户控件里面包含回发事件,在回传回来的时候需要保持新的数据。
先来构建分页用户控件,由于前面几篇文章都在讲这些东西,所以就直接拿过来改了改,分页代码可以查看上面的文章1,文章2,下面是用户控件的一部分代码。
public class pagingcontrol : system.web.ui.usercontrol
{
private int pagecount;
private int recordcount;
……
private void page_load(object sender, system.eventargs e)
{
if(!page.ispostback)
{
datagriddatabind();
}
}
//绑定数据
private void datagriddatabind()
{
dataset ds = getcustomersdata(pageindex,pagesize,ref recordcount,ref pagecount);
this.datagrid1.virtualitemcount = recordcount;
this.datagrid1.datasource = ds;
this.datagrid1.databind();
setpagingstate();
}
//绑定新的页面
private void lbtnnavigation_click(object sender, system.eventargs e)
{
linkbutton btn = (linkbutton)sender;
switch(btn.commandname)
{
case "first":
pageindex = 0;
break;
case "prev":
pageindex = pageindex - 1;
break;
case "next":
pageindex = pageindex + 1;
break;
case "last":
pageindex = pagecount - 1;
break;
}
datagriddatabind();
}
……
}
在上面我们注意到在页面load事件中判断if(!page.ispostback)来防止在回发加载的时候进行两次绑定,因为第一次完全没有必要,最终由lbtnnavigation_click中的绑定决定。
假设pagingcontrol.ascx为上面的用户控件的文件名,而且同page页面文件在同一目录,下面是aspnetcommonpaging.aspx文件的代码,为了动态加载,在页面上放了一个placeholder控件来加载先前的用户控件。
前台文件如下:
<%@ page language="c#" codebehind="aspnetcommonpaging.aspx.cs" autoeventwireup="false" inherits="aspnetpaging.aspnetcommonpaging" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >[www.iocblog.net 来源]
<html>
<head>
<title>aspnetcommonpaging</title>
</head>
<body>
<form id="form1" method="post" runat="server">
<asp:placeholder id="placeholder1" runat="server"></asp:placeholder>
</form>
</body>
</html>
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。