2009-05-26 3 views
0

Я использую Intelligencia.UrlRewriter на странице с контролем списка и датапагером. Пейджинг данных работает нормально, но пейджер использует реальный URL вместо перезаписанного..net datapager + listview + Intelligencia.UrlRewriter

Если URL перезапись:

/products-page-1.aspx?page=2 

И реальный URL:

/products.aspx?id=1 

пейджера использует /products.aspx?id=1&page=2

Я хочу, чтобы иметь возможность установить его так пейджера использует:

/products-page-1.aspx?page=2 

I нашел некоторую информацию о сети и получил его работу с функциями, указанными ниже:

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 со страницы, функция перестает работать.

Есть ли способ изменить целевой URL-адрес в датапагере?

ответ

0

фиксировали

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); 
    } 

}

Смежные вопросы