留言簿
2007/1/4 15:32:00 林伟
您好,我长久以来一直为快速开发并兼有高性能的分页工具产生苦恼。在MS VS2005中,自带的GridView中就已有翻页功能,只不过不太强大。但勉强可用。我不知贵站所介绍的翻页工具是否仅是多了些小功能,对于快速翻页的性能上有没有其他的方案?
或者有没有些例子可以提供,感谢万分。
ray530@21cn.com
或者有没有些例子可以提供,感谢万分。
ray530@21cn.com
回复:您好,分页的性能关键还取决于数据获取的速度,GridView和DataGrid默认的分页方式是先取出所有数据然后过滤掉除当前页外的所有数据,如果数据很大的话这对分页性能有很大影响,一般数据量比较大时,多数网站都是通过存储过程或sql语句只获取并从数据库返回当前页的数据,这样可以大大提高数据获取的速度。AspNetPager分页控件只是实现简单的分页导航功能而已,它和要分页的数据相对是独立的,也就是数据如何获取以及从哪里获取都和控件没有关系,AspNetPager除可以实现象GridView和DataGrid的PostBack分页方式外,它还提供了一种通过Url分页的方式,而且分页导航元素可以自由控制,非常灵活,这是GridView和DataGrid所不具备的,另外AspNetPager用于任何需要分页导航功能的地方,不仅仅限于为GridView或DataGrid分页,现在的下载页面就有最新的6.0版的示例下载,您可以下载看看,请注意:4.3.5版是用于VS2003的。谢谢!
2007/1/4 9:50:00 Aboo
你好,吴老师你的控件是不是只要设置为图片按钮,那么所有的按钮都必须是图片类型的了?怎么不能分开啊?比如说,数字按钮是文本,而上一页下一页这些是图片呢
?
?
回复:您好,这些都可以单独设置,也可以同时设置,请参考6.0版的示例项目中UrlPaging示例,注意这几个属性:PagingButtonType—该属性设置所有导航元素是图片还是文本类型;NumericButtonType—该属性设置数字页索引的类型,默认值是Text,如果没有设置这个属性值,它就和PagingButtonType值一样,MoreButtonType(更多页...)和NavigationButtonType(前后首尾页)与NumericButtonType一样,单独设置这几个属性值将覆盖PagingButtonType的设置。谢谢!
2007/1/3 22:22:00 明明
吴老师:
能否发一份,搜索(多个Like如:01 like '%'+02+'%' or 03 like '%'+04+'%')并利用webdiyer分页,使用存储过程的实例给我呢。非常感谢,非常感谢。
能否发一份,搜索(多个Like如:01 like '%'+02+'%' or 03 like '%'+04+'%')并利用webdiyer分页,使用存储过程的实例给我呢。非常感谢,非常感谢。
回复:您好,这种字段不定的动态查询用存储过程和不用存储过程从性能上来说基本没有什么区别,因为存储过程也不得不用exex或execute来执行动态的sql语句,这就失去了存储过程的性能优势,所以这种情况时最方便的还是动态产生sql语句并直接执行,您可以把动态生成的查询条件保存在ViewState或Session中,就和现在的6.0版的示例项目中的search示例是一样的,如果您希望在数据源端实现分页(即用sql语句获取只前页的数据而非所有数据),那取决于您使用的数据以及要查询的表的结构,相应的sql语句可以很简单也可能很难,如果您用SQL Server 2005,用它的row_number函数来实现分页会方便得多。谢谢!
2007/1/3 19:48:00 extend
谢谢你,webdiyer兄弟.
回复:不客气,彼此彼此:)谢谢!
2007/1/2 18:52:00 zyprexa
Thanks! Good work. See U. Happy New Year!
回复:Happy New Year! I hope this isn't an ad post. thanks!
2007/1/2 18:32:00 明明
SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionSqlServer"].ToString());
SqlDataAdapter da = new SqlDataAdapter("select iInfo_ID,sInfo_Title from [Yp_Info] order by dAddTime desc", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "mytable");
DataView dv = ds.Tables["mytable"].DefaultView;
PagedDataSource pds = new PagedDataSource();
ds.AllowPaging = true;
pds.PageSize = AspNetPager1.PageSize;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
AspNetPager1.RecordCount = dv.Count;
pds.DataSource = dv;
repeater1.DataSource = pds;
repeater1.DataBind();
Conn.Close();
我这样的分页是不是不太好,请吴老师指导
SqlDataAdapter da = new SqlDataAdapter("select iInfo_ID,sInfo_Title from [Yp_Info] order by dAddTime desc", Conn);
DataSet ds = new DataSet();
da.Fill(ds, "mytable");
DataView dv = ds.Tables["mytable"].DefaultView;
PagedDataSource pds = new PagedDataSource();
ds.AllowPaging = true;
pds.PageSize = AspNetPager1.PageSize;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
AspNetPager1.RecordCount = dv.Count;
pds.DataSource = dv;
repeater1.DataSource = pds;
repeater1.DataBind();
Conn.Close();
我这样的分页是不是不太好,请吴老师指导
回复:如果项目不是很大,也不拘于N层结构的话,这样也没什么,只是把数据库连接、SQL语句都放在aspx页面后台处理会给以后的升级及维护带来些麻烦而已,建议您使用存储过程,以及象示例中那样把数据访问层独立出来,这样代码结构清晰,在以后的升级和维护时会方便很多,谢谢!
2007/1/2 18:22:00 extend
在6.0版本中,使用url分页时,有一个小小的bug.希望能尽快解决.
bug描述如下:
当使用url分页的时候,如果该页已经有其他Query参数,如a.aspx?hot=1.
在该页中如果有类似于linkButton一类的按钮.点击该按钮之前,也就是回发之前,一切都正常.url为a.aspx?hot=1&page=1.但是当点击按钮产生回发后,分页连接就变为a.aspx?page=1,hot参数就消失了。希望能解决
bug描述如下:
当使用url分页的时候,如果该页已经有其他Query参数,如a.aspx?hot=1.
在该页中如果有类似于linkButton一类的按钮.点击该按钮之前,也就是回发之前,一切都正常.url为a.aspx?hot=1&page=1.但是当点击按钮产生回发后,分页连接就变为a.aspx?page=1,hot参数就消失了。希望能解决
回复:您好,非常感谢您报告这个bug,该bug现已修正,您可以到下载页面重新下载更新后的控件dll文件。再次对您的帮助深表感谢!
2007/1/2 17:38:00 强烈
希望早日出6。0正式版,,和放出源码
回复:您好,现在的测试版基本上和正式版已经没有多少区别了,发现bug我会随时修正,这几天已经修正了两处关键的bug了,1月2日晚又更新了一次控件,您可以下载最新的示例试运行一下,没有问题就可以直接在项目中使用了,正式版发布后只需替换控件的dll文件即可,不会再有不兼容的问题。这几天正在重新制作主页,主页做完后将与正式版一块发布,同时也希望能在正式发布前尽可能解决所有发现的bug,谢谢!
2007/1/2 16:47:00 明明
研究两天了你的翻页控件,仍然没有找到使用的方法,看你的实例头太晕,能否有朋友贴出实例,不用站长的类。
回复:您好,不知道您看的是哪个版本的示例?如果是6.0.0版的,那已经是最简洁的了,一般只有几行代码,不可能看不懂的,如果是4.3.5版,您可以参看其中的vsproj.rar中用vs2003建的示例项目,用Editplus建的默认示例项目因为设置了许多属性,所以不是很直观,以后的升级版本中我会注意到这些问题,多做一些更简单也更实用的示例方便大家参考。谢谢!
2007/1/2 13:33:00 zxl
用4版本出现的问题
开始拖入控件用的是postback按钮方式分页
后来改成url分页
但分页方法执行了两遍
该方法必须要用Request["page"]传入pageindex么?
为什么采用url分页的时候在pageload之前先执行了pager_Changed方法(我的分页控件id:pager)
开始拖入控件用的是postback按钮方式分页
后来改成url分页
但分页方法执行了两遍
该方法必须要用Request["page"]传入pageindex么?
为什么采用url分页的时候在pageload之前先执行了pager_Changed方法(我的分页控件id:pager)
回复:您好,是的,Url分页时分页事件是在页面加载时引发的,所以您只需要在PageChanged事件中绑定数据就行了,不需要在Page_Load中绑定,否则就会绑定两次。谢谢!
