我在一个有listview控件和datapager的页面上使用Intelligencia.UrlRewriter。数据分页工作正常,但分页程序使用真实的URL而不是重写的URL。
如果URL重写是:
/products-page-1.aspx?page=2和真实的URL:
/products.aspx?id=1寻呼机使用/products.aspx?id=1&page=2
我希望能够设置它,以便寻呼机使用:
/products-page-1.aspx?page=2我在网上找到了一些信息,并使用以下功能使其工作:
protected void VideosDataPager_PreRender(object sender, EventArgs e)
{
DataPager pager = (DataPager)Page.FindControl("VideosDataPager");
int count = pager.TotalRowCount;
int pageSize = pager.PageSize;
int pagesCount = count / pageSize + (count % pageSize == 0 ? 0 : 1);
int pageSelected = pager.StartRowIndex / pageSize + 1;
for (int i = 1; i <= pagesCount; ++i)
{
if (pageSelected != i)
{
HyperLink link = new HyperLink();
link.NavigateUrl = "/products--page--" + catnameforPaging + "--1.aspx?p=" + i.ToString();
link.Text = i.ToString();
VideosList.Controls.Add(link);
}
else
{
Literal lit = new Literal();
lit.Text = i.ToString();
VideosList.Controls.Add(lit);
}
Literal space = new Literal();
space.Text = " ";
VideosList.Controls.Add(space);
}
}但是这样我得到了2个数据页,如果我从页面中删除了VideosDataPager,函数就会停止工作。
有没有办法在datapager上更改目标URL?
发布于 2009-05-26 19:04:32
修复为
protected void VideosDataPager_PreRender(object sender, EventArgs e){
DataPager pager = (DataPager)Page.FindControl("VideosDataPager");
pager.Controls.Clear();
int count = pager.TotalRowCount;
int pageSize = pager.PageSize;
int pagesCount = count / pageSize + (count % pageSize == 0 ? 0 : 1);
int pageSelected = pager.StartRowIndex / pageSize + 1;
if (pageSelected>1)
{
// first page
HyperLink img = new HyperLink();
img.ImageUrl = "/images/first.png";
img.Text = "First page";
img.NavigateUrl = "/videos--cat--" + catnameforPaging + "--1.aspx?s="+ NvUtils.GetCurrentSessionKey();
VideosList.Controls.Add(img);
// gap
Literal space = new Literal();
space.Text = " ";
VideosList.Controls.Add(space);
}
// paging
for (int i = 1; i <= pagesCount; ++i)
{
if (pageSelected != i)
{
HyperLink link = new HyperLink();
link.NavigateUrl = "/videos--cat--" + catnameforPaging + "--1.aspx?s="+ NvUtils.GetCurrentSessionKey()+"&p=" + i.ToString();
link.Text = i.ToString();
VideosList.Controls.Add(link);
}
else
{
Literal lit = new Literal();
lit.Text = i.ToString();
VideosList.Controls.Add(lit);
}
Literal spaceb = new Literal();
spaceb.Text = " ";
VideosList.Controls.Add(spaceb);
}
if (pageSelected < pagesCount)
{
// last page
HyperLink imgb = new HyperLink();
imgb.ImageUrl = "/images/last.png";
imgb.Text = "Last page";
imgb.NavigateUrl = "/videos--cat--" + catnameforPaging + "--1.aspx?s=" + NvUtils.GetCurrentSessionKey() + "&p=" + pagesCount;
VideosList.Controls.Add(imgb);
}}
https://stackoverflow.com/questions/911896
复制相似问题