现在的位置: 首页 > 综合 > 正文

自定义控件GridTable实现分页效果

2012年10月21日 ⁄ 综合 ⁄ 共 1963字 ⁄ 字号 评论关闭

    最近项目需求需要一个有分页功能的展示控件,由于数据量非常大GridView控件显得无能为力了。于是自己动手写了一个支持大量数据的分页展示控件GridTable(当然海量数据查询算法还要自己搞定),该控件继承repeater。

    控件的数据源不是用datasource赋值,是要实现一个内部委托“ObjectDataSourceBindEventHandler(int startCount, int endCount)”,该方法定义两个变量,结果集的开始行号和结束行号,返回一个结果集对象从而实现分页功能。效果如下:

 

aspx文件部分代码

aspx代码
<wc1:GridTable ID="Grid1" runat="server" BannerTextFormat="每页{0}条/共{1}条&nbsp;第{2}页/共{3}页"
                PageSize="5" BannerCls="bannercls" PagerPosition="Both" PaginationCls="pagind"
                PageImgBtUrl="btn4.gif" AllowPaging="true">
                
<PageTemplate>
                    
<h1>
                        PageTemplate Show</h1>
                
</PageTemplate>
                
<HeaderTemplate>
                    
<dl class="briefresult">
                
</HeaderTemplate>
                
<ItemTemplate>
                    
<dt>
                        
<img src="images/arr14.gif" width="18" height="17" /><href="#"><%Eval("name")%></a>
                        
<span>health preserving yangsheng </span></dt>
                    
<dd>
                        
<%Eval("info"%>
                    
</dd>
                    
<dd class="more">
                        
<href="#">阅读全文 >>></a></dd>
                
</ItemTemplate>
                
<FooterTemplate>
                    
</dl></FooterTemplate>
                
<EmptyDataTemplate>
                    
<h1>
                        EmptyData</h1>
                
</EmptyDataTemplate>
            
</wc1:GridTable>

后台.cs部分

.cs代码
    protected void Page_Load(object sender, EventArgs e)
    {
        Grid1.ObjectDataSourceBind += new TPI.Web.UI.WebControls.GridTable.ObjectDataSourceBindEventHandler(Grid1_ObjectDataSourceBind);
        
if (!IsPostBack)
        {
            Grid1.DataBind();
        }
    }

    object Grid1_ObjectDataSourceBind(int startCount, int endCount)
    {
        ……
        
return dt;
    }

不足

1、因为继承repeater,所以所有样式要自己定义 (表格的时候比较麻烦)

2、 没有ajax方式翻页(希望高手指点一下如何实现,不用updatepannel)

3、功能比较简单,需要进一步改进

 

代码发布出来欢迎拍砖 ,如果大家有什么好的建议望不啬赐教

 

源代码下载

 

 

抱歉!评论已关闭.