选择显示字体大小

亲密接触asp.net(13) 实现个性化分页

个性化的分页实现 我们前面讲的分页,只不过是通过修改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"
/>
 
<asp:linkbutton id="btnprev" runat="server"
text="前页"
commandargument="prev"
forecolor="navy"
font-name="verdana" font-size="8pt"
onclick="pagerbuttonclick"
/>
 
<asp:linkbutton id="btnnext" runat="server"
text="后页"
commandargument="next"
forecolor="navy"
font-name="verdana" font-size="8pt"
onclick="pagerbuttonclick"
/>
 

<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属性,以达到翻页的效果。

如果大家在本节中看不懂结构,请参看下一节的全部代码以及示例。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons