欢迎光临
我们一直在努力

个性化的分页实现-.NET教程,评论及其它

建站超值云服务器,限时71元/月

我们前面讲的分页,只不过是通过修改datagrid的属性来实现分页,这样有这样的好处,最大的就是简单,呵呵,根本不用操心,分页是如何产生的。

但是它同样有缺点,不能按照我们想像的产生各种我们需要的样式。

没有办法,想个性化功能,只有自已动手来做了,呵呵。

我们一步步的来,首先是导入需要的命名空间。下面的例子,其实也是我从国外找来的,再加上点个人的东东,再汉化,呵呵。今天心情很好,我连标签色彩都给大家显示出来了。呵呵,更利于大家看程序。

<%@ page language=”c#” %>
<%@ import namespace=”system.data” %>
<%@ import namespace=”system.data.sql” %>

我们先看看,我们的web控件是哪些,再看看代码是怎么写的,这样比较好:)

<body>

<h3><font face=”verdana”>个性化的分页实例^&^</font></h3>

<form runat=server>

<asp:datagrid id=”mydatagrid” runat=”server”
allowpaging=”true”
pagesize=”10″
pagerstyle-mode=”numericpages”
pagerstyle-horizontalalign=”right”
onpageindexchanged=”mydatagrid_page”
bordercolor=”black”
borderwidth=”1″
gridlines=”both”
cellpadding=”3″
cellspacing=”0″
font-name=”verdana”
font-size=”8pt”
headerstyle-backcolor=”#aaaadd”
alternatingitemstyle-backcolor=”#eeeeee”
autogeneratecolumns=”false”

>
<property name=”columns”>
<asp:boundcolumn headertext=”工作室成员” datafield=”enter_id” />
<asp:boundcolumn headertext=”登陆时间” datafield=”enter_time” />
</property>
</asp:datagrid>

<p>
<asp:linkbutton id=”btnfirst” runat=”server”
text=”首页”
commandargument=”0″
forecolor=”navy”
font-name=”verdana” font-size=”8pt”
onclick=”pagerbuttonclick”
/>
&nbsp;
<asp:linkbutton id=”btnprev” runat=”server”
text=”前页”
commandargument=”prev”
forecolor=”navy”
font-name=”verdana” font-size=”8pt”
onclick=”pagerbuttonclick”
/>
&nbsp;
<asp:linkbutton id=”btnnext” runat=”server”
text=”后页”
commandargument=”next”
forecolor=”navy”
font-name=”verdana” font-size=”8pt”
onclick=”pagerbuttonclick”
/>
&nbsp;

<asp:linkbutton id=”btnlast” runat=”server”
text=”末页”
commandargument=”last”
forecolor=”navy”
font-name=”verdana” font-size=”8pt”
onclick=”pagerbuttonclick”
/>

<p>
<asp:checkbox id=”chk1″ runat=”server”
text=”显示内置的页数”
font-name=”verdana”
font-size=”8pt”
autopostback=”true”
/>

<p>
<table bgcolor=”#eeeeee” cellpadding=”6″><tr><td nowrap><font face=”verdana” size=”-2″>

<asp:label id=”lblcurrentindex” runat=”server” /><br>
<asp:label id=”lblpagecount” runat=”server” /><br>

</font></td></tr></table>
</form>

</body>

从上面的例子我们可以看出点击linkbutton控件onclick触发的是pagebuttonclick事件,datagrid页面onpageindexchanged改变触发的是mydatagrid_page事件,我们以后就是就是要编写这两件事件的代码

下面是先要查询的数据库的信息,用一个函数表示,因为经常用到:),我打开的表,呵呵,是我们工作室管理区的登陆记录表(哈又卖了点我们工作室的秘密给大家)

icollection createdatasource()
{
    /*
        读取数据库的信息,获得dataview
    */
    sqlconnection myconnection = new sqlconnection(“server=localhost;uid=sa;pwd=123456;database=aspcn”);
    sqldatasetcommand mydatasetcommand = new sqldatasetcommand(“select * from admin_enter order by enter_time desc”,myconnection);
    dataset ds= new dataset();
    mydatasetcommand.filldataset(ds,”admin_enter”);
    return ds.tables[“admin_enter”].defaultview;
}

然后中是page_load函数,在这里主要是判断一下是否显示datagrid自带的那些分页数字,使用的是pagestyle的visible属性:

void page_load(object sender, eventargs e)
{
    //判断是否隐藏pagerstyle-mode
    if (chk1.checked)
    {
        mydatagrid.pagerstyle.visible=true;
    }
    else
    {
        mydatagrid.pagerstyle.visible=false;
    }

    bindgrid();
}

下面是处理点击事件的pagerbuttonclick,这是我们的核心部分,其实我们操作的也只是datagrid的currentpageindex属性。如果currentpageindex小于pagecount则有下一页,如果currentpageindex大于0则表示有前一页。

void pagerbuttonclick(object sender, eventargs e)
{
    //获得linkbutton的参数值
    string arg = ((linkbutton)sender).commandargument;

    switch(arg)
    {
        case (“next”):
            if (mydatagrid.currentpageindex < (mydatagrid.pagecount – 1))
            mydatagrid.currentpageindex ++;
            break;
        case (“prev”):
            if (mydatagrid.currentpageindex > 0)
            mydatagrid.currentpageindex –;
            break;
        case (“last”):
            mydatagrid.currentpageindex = (mydatagrid.pagecount – 1);
            break;
        default:
            //本页值
            mydatagrid.currentpageindex = arg.toint32();
            break;
    }
    bindgrid();
}

下面是mydatagrid_page,主要操作是调用bindgrid函数,以将数据交给datagrid显示:

void mydatagrid_page(object sender, datagridpagechangedeventargs e)
{
    //处理按下数字的方法
    bindgrid();
}

最后是两个函数,他们的作用,我都注释了:)

void bindgrid()
{
    //将dataview绑定到datagrid上去
    mydatagrid.datasource = createdatasource();
    mydatagrid.databind();
    showstats();
}

void showstats()
{
    //显示页面信息
    lblcurrentindex.text = “当前页数为: ” + ((int)mydatagrid.currentpageindex+1);
    lblpagecount.text = “总页数是: ” + mydatagrid.pagecount;
}

到此为止,我们的个性化页面已经完成了(全部代码和显示看一下节),我们总的思想就是使用linkbutton控件做为翻页的标帜,通过判断linkbutton的commandargument值,操作datagrid的currentpageindex属性,以达到翻页的效果。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 个性化的分页实现-.NET教程,评论及其它
分享到: 更多 (0)