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

c#自定义分页控件

2012年12月27日 ⁄ 综合 ⁄ 共 2452字 ⁄ 字号 评论关闭

      前一阵子辅导实习生做一个学生管理系统的雏形,发现他们对自定义控件的理解不是很好,所以今天得闲就把分页控件的制作一步步讲解出来,也给自己做个巩固。

 

一、自定义分页控件的外观(这个很简单,直接拖拽控件就可以了)

linkButton 控件要有onclick事件

dropdown控件要有OnSelectedIndexChanged事件,且autopostback为true

 

二、定义事件和委托
public delegate void OnPageIndexChangedDelegate(int pageIndex);

[Description("页面跳转事件")]
[Browsable(true)]
public event OnPageIndexChangedDelegate OnPageIndexChanged = delegate { };

 

三、定义相关属性

//页码

 public int PageSize
    {
        get
        {
            if (ViewState["PageSize"] == null)
            {
                ViewState["PageSize"] =5;
            }

            return (int)ViewState["PageSize"];
        }
        set
        {
            ViewState["PageSize"] = value;
        }
    }

//记录数

    public int RecordCount
    {
        get
        {
            if (ViewState["RecordCount"] == null)
            {
                ViewState["RecordCount"] = 0;
            }

            return (int)ViewState["RecordCount"];
        }
        set { ViewState["RecordCount"] = value; }
    }

//页数

    public int PageCount
    {
        get { return (int)(Math.Ceiling(RecordCount / (double)PageSize)); }
    }

//当前页

    public int CurrentPageIndex
    {
        get
        {
            if (ViewState["CurrentPageIndex"] == null)
            {
                ViewState["CurrentPageIndex"] = 1;
            }
            return (int)ViewState["CurrentPageIndex"];
        }
        set { ViewState["CurrentPageIndex"] = value; }
    }

   

 

四、相关方法

 

1、在自定义控件的page_load事件中初始化控件的值

2、定义public方法Bind()

如果recordcount为0的时候,四个linkbutton按钮全部不可以用。

如果pageCount小于1的时候,四个linkbutton按钮全部不可以用

如果当前页为1的时候,下一页和末页不可用

如果当前页为pagecount的时候,首页和上一页不可以用。

3、四个linkbutton的onclick事件

首页:当前页码为1,调用OnPageIndexChanged

上一页:当前页面-1,调用OnPageIndexChanged

下一页:当前页面+1,调用OnPageIndexChanged

末页:当前页面为pagecount,OnPageIndexChanged

 

五、如何使用

1、直接把自己定义的分页控件拖拽到页面中

2、在页面的pageload中要定义分页控件的OnPageIndexChanged事件。如:

this.Pager1.OnPageIndexChanged += new pager.OnPageIndexChangedDelegate(Pager1_OnPageIndexChanged);

3、在Pager1_OnPageIndexChanged(int pageIndex)的方法中调用gridview的绑定,并且把pageindex和pagesize传过去。

4、至于分页的sql语句,或者分页的存储过程需要自己另写。

 

六、扩展功能

       到第五步为止,一个简单的自定义分页控件已经完成,但是有的分页控件可能还有下拉列表用于选择每页显示的条数,有文本框用于跳转到指定的页码。还有些用户说中a页面中分页控件上面的文本叫“首页、上一页、下一页、末页”,在b页面中我想要控件上的文本是”<<、<、>、>>“。我总不能重新再写一个吧。

       其实这些都很简单,你只要在分页控件中添加一些属性就可以了

如:改变控件上文本的内容,你可以定义一个属性叫FirstPageText,用于对首页的按钮文本进行设置,其余的依次类推

public string FirstPageText
        {
            get { return lnkFirstPage.Text; }
            set { lnkFirstPage.Text = value; }
        }

 

如:在文本框中输入页码,跳转到相应的页面。在textbox的TextChanged事件中对currentPageIndex赋值,然后调用OnPageIndexChanged。

 

注:差点忘了一点了,分页控件要继续自UserControl哦

 

七:总结

其实自定义控件很强大,我们要善于用自己的大脑和微软提供的开发框架。让程序在自己的手里变魔术~

【上篇】
【下篇】

抱歉!评论已关闭.