每次用Repeater控件,总会牵扯到分页问题,索性自己重写一个Repeater控件,将分页功能集成进去,以后就不会这么麻烦了。废话少说贴上Code:
新建一个ASP.NET 服务器控件项目,添加一个Repeater类,继承System.Web.UI.WebControls.Repeater,然后开始在这个Repeater类里面写代码。
1、首先设置一下DefaultProperty的值
DefaultProperty:[DefaultProperty("Text"), ToolboxData("<!--Repeater Begin --><{0}:Repeater ID=\"rpList\" runat=server EnableViewState=\"false\" ><HeaderTemplate></HeaderTemplate><ItemTemplate></ItemTemplate><FooterTemplate></FooterTemplate></{0}:Repeater><!--Repeater End -->")],这里就写Repeater 最长用的几个东西,大家可以根据自己需要进行扩展。
2、添加几个分页要用的属性
private int _recordcount = 0;
private int _pagesize = 0;
private string _pagelink = "";
private int _currentpage = 1;
[Bindable(true), Category("Data"), DefaultValue("1"), Description("记录总数")]
public int RecordCount
{
get
{
return _recordcount;
}
set
{
_recordcount = value;
}
}
[Bindable(true), Category("Data"), DefaultValue("1"), Description("每页显示记录数")]
public int PageSize
{
get
{
return _pagesize;
}
set
{
_pagesize = value;
}
}
[Bindable(true), Category("Data"), DefaultValue(""), Description("当前页链接")]
public string PageLink
{
get
{
return _pagelink;
}
set
{
_pagelink = value;
}
}
[Bindable(true), Category("Data"), DefaultValue("1"), Description("当前页")]
public int CurrentPage
{
get
{
return _currentpage;
}
set
{
_currentpage = value;
}
}
3、添加输出到HTML的方法
7、后台代码
void BindPage()
{
this.rpList.PageSize = 10;
this.rpList.RecordCount = IPInfo_BLL.getDatabyCount();
this.rpList.PageLink = ConfigurationManager.AppSettings["PageUrl1"].ToString();
this.rpList.CurrentPage = Request.QueryString["page"] == null ? 1 : int.Parse(Request.QueryString["page"]);
int SIndex = (this.rpList.CurrentPage-1) * 10 + 1;
this.rpList.DataSource = IPInfo_BLL.getDatabyIndex(SIndex, this.rpList.PageSize);
this.rpList.DataBind();
}
//分页
public static IQueryable getDatabyIndex(int startIndex,int PageSize)
{
var query = from p in datacontext.IPInfo
select new
{
p.IPid,
p.IPFrom,
p.IPTo,
p.IPLocation,
p.IPCity,
p.IPToNumber,
p.IPFromNumber
};
return query.Skip(startIndex).Take(PageSize);
}
8、看看最后效果
当然了,最后样式不满意,可以自己修改吗,我这里只是简单的写下,以后根据需要扩展。
4、在项目中添加这个控件的引用
/Files/yangtongnet/SRepeater.rar
5、在页面中添加命名空间
<%@ Register Assembly="ServerControl" Namespace="ServerControl" TagPrefix="SControl" %>
6、控件的客户端代码
Repeater分页控件:
<!--Repeater Begin -->
<SControl:Repeater ID="rpList" runat="server" EnableViewState="false">
<HeaderTemplate>
<table class="tby">
<tr>
<th>ID</th>
<th>IPFrom</th>
<th>IPTo</th>
<th>IPLocation</th>
<th>City</th>
<th>IPToNumber</th>
<th>IPFromNumber</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("IPid")%></td>
<td><%#Eval("IPFrom")%></td>
<td><%#Eval("IPTo")%></td>
<td><%#Eval("IPLocation")%></td>
<td><%#Eval("IPCity") %></td>
<td><%#Eval("IPToNumber")%></td>
<td><%#Eval("IPFromNumber")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</SControl:Repeater>
<!--Repeater End -->