5月,我们的纪念

其实也谈不上什么特色,只是将原本在服务器端处理的事情交到了客户端而已。

刚好在今天的项目中用到了,晚上回来后用在了feed上。

这段代码是从懒人上下载下来的,原代码中是没有页面中的其它参数的。

如:x.aspx?i=1&t=q&page=2,经过它处理后可能会丢失i、t这二个参数,所以需要修改它的版本。

我修改后的版本:

function RenderPager(recordCount,currentPage,pageSize,pageCount,pagerID,param)

参数说明:

recordCount  记录数
currentPage 当前页码(可以在js中获取)
pageSize每页记录数
pageCount 总页数(当然也可以在js中计算)
pagerID 最终分页代码展示在哪个html容器中
param其它参数,如:key=asdf&t=11&page={0}

{0}为占位符,在js中用页码数来填充。

Pager.rar (993.00 bytes)

Categories:   学以致用
Tags:  
Actions:   Comments (4) |

Comments

1#

April 9 2008 , 15:28

鬼鬼

老大,你的http://feed.lemongtree.com/ 采用了这个分页.
但是,我在使用这个分页的时候碰到点问题,param的值你是怎么定义的? 我用用<%=Url.Action("page")+"/{0}"%>
第一次可以,但是第二次翻页会出现 2/{0} 第三次 2/4/{0} 如何处理?

鬼鬼cn | Top

2#

April 10 2008 , 07:59

幻想曲

@鬼鬼:
用了一个比较折衷的办法,但并不是最终的解决方案
[code:c#]
public string Param
{
get
{

Regex reg = new Regex(@"href\s*=\s*(?:[\'\""\s](?<1>[^\""\']*)[\'\""])", RegexOptions.IgnoreCase | RegexOptions.Compiled);
Regex regNum = new Regex(@"\d+$", RegexOptions.IgnoreCase | RegexOptions.Compiled);

string path = Request.Url.AbsoluteUri;
string p = "";
bool b = false;
switch (DataSourceType)
{
case RssReader.MVC.Web.Models.DataTypeEnum.All:
p = Html.ActionLink("a", "Index", "Feed", new { page = 3 });
b = reg.IsMatch(p);
if (b)
{
p = reg.Match(p).Groups[1].ToString();
p = regNum.Replace(p, "{0}");

}
break;
case RssReader.MVC.Web.Models.DataTypeEnum.Category:
p = Html.ActionLink("a", "category", "Feed", new { page = 3 });
b = reg.IsMatch(p);
if (b)
{
p = reg.Match(p).Groups[1].ToString();
p = regNum.Replace(p, "{0}");

}
break;
case RssReader.MVC.Web.Models.DataTypeEnum.SingleSite:
p = Html.ActionLink("a", "RssItemBySite", "Feed", new { page = 3});
b = reg.IsMatch(p);
if (b)
{
p = reg.Match(p).Groups[1].ToString();
p = regNum.Replace(p, "{0}");
}
break;

default:
break;
}
return p;


}
}
[/code]

幻想曲cn | Top

3#

April 15 2008 , 11:20

鬼鬼

我是,首先定义一个类 DataPage 然后写个方法ToString
public string ToString(string pagebar,string url)
{
return string.Format(@"<script type=""text/javascript"">RenderPager({0},{1},{2},{3},'{4}','{5}')</script>", Count, Page, Take, Sum, pagebar, url);
}

VIEW调用
<%=(ViewData["Page"] as DataPage).ToString("pagebar", Url.RouteUrl(new RouteValueDictionary(new {page = "" })) + "/{0}") %>

老大有联系方法吗?网上研究ASP.NET MVC的不是太多。想跟你没事聊聊,顺便学习。 我的:QQ:1122312

鬼鬼cn | Top

4#

April 15 2008 , 17:22

幻想曲

@鬼鬼:
http://blog.lemongtree.com/contact.aspx
这里有我的联系方式啊

幻想曲cn | Top

Add comment



(Will show your Gravatar icon)  



  Country flag


[b][/b] - [i][/i] - [u][/u]- [quote][/quote]

:-/ ^_^ :d :o :kiss: :) :p :se: [yeah] :( :love: :han: :up: :cry: :zzz: o_o


申请链接请看这里