2013-02-02 90 views
0

我正在使用PagedDataSource分頁中繼器,它工作正常,但有沒有辦法突出顯示所選頁碼或使其變爲粗體。我嘗試過CSS,itemcommand,並單擊事件但沒有運氣。如何將PagedDataSource中的頁碼突出顯示爲分頁中繼器

預先感謝

中繼器:

<asp:Repeater ID="repeaterPager" runat="server" OnItemCommand="repeaterPager_ItemCommand"> 
     <ItemTemplate> 
     <asp:LinkButton CssClass="sayfaNo" ID="btnPage" CommandName="Page" CommandArgument="<%#Container.DataItem %>" runat="server"> 
<%# Container.DataItem %></asp:LinkButton> 
     </ItemTemplate> 
    </asp:Repeater> 

代碼隱藏:

private void MakeleleriGetir() 
     { 
      SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString); 
      SqlDataAdapter da = new SqlDataAdapter("SELECT p.PostID,p.Title,p.DateTime,p.PostShort,p.CategoryID,i.SmallFileName,c.CategoryName From Posts as p inner join Resimler as i ON p.PostID = i.PostID inner join Categories as c On p.CategoryID = c.CategoryID", cnn); 

      DataTable dt = new DataTable(); 
      da.Fill(dt); 

      PagedDataSource pds = new PagedDataSource(); 
      pds.DataSource = dt.DefaultView; 
      pds.AllowPaging = true; 
      pds.PageSize = 4; 
      pds.CurrentPageIndex = CurrentPage; 

      PageCount = pds.PageCount; 

      btnPrevious.Enabled = !pds.IsFirstPage; 
      btnNext.Enabled = !pds.IsLastPage; 

      if (pds.PageCount > 1) 
      { 
      repeaterPager.Visible = true; 
      ArrayList pages = new ArrayList(); 
      for (int i = 0; i < pds.PageCount; i++) 
      { 
       { 
       pages.Add((i + 1).ToString()); 

       } 
      } 

      repeaterPager.DataSource = pages; 
      repeaterPager.DataBind(); 
      } 
      else 
      { 
      repeaterPager.Visible = false; 

      } 
      RepeaterPosts.DataSource = pds; 
      RepeaterPosts.DataBind(); 
     } 
protected int CurrentPage 
    { 
     get 
     { // look for current page in ViewState 

     object o = this.ViewState["_CurrentPage"]; 

     if (o == null) 
     { 
      return 0; // default to showing the first page 
     } 

     else 
     { 
      return (int)o; 
     } 

     } 

     set 
     { 
     this.ViewState["_CurrentPage"] = value; 
     } 
    } 

    public int PageCount 
    { 
     get 
     { 
     if (ViewState["_PageCount"] != null) 
      return Convert.ToInt32(ViewState["_PageCount"]); 
     else 
      return 0; 
     } 
     set 
     { 
     ViewState["_PageCount"] = value; 
     } 

    } 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     repeaterPager.ItemCommand += new RepeaterCommandEventHandler(repeaterPager_ItemCommand); 
    } 


    protected void repeaterPager_ItemCommand(object source, RepeaterCommandEventArgs e) 
    { 

     CurrentPage = Convert.ToInt32(e.CommandArgument) - 1; 
     MakeleleriGetir(); 

    } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

     MakeleleriGetir(); 
    } 

    protected void btnNext_Click(object sender, EventArgs e) 
    { 
     CurrentPage += 1; 
     MakeleleriGetir(); 
    } 

    protected void btnPrevious_Click(object sender, EventArgs e) 
    { 
     CurrentPage -= 1; 
     MakeleleriGetir(); 
    } 

    } 
} 

回答

0

邏輯: 使用ItemDataBound事件,並與btnPage的當前值進行比較當前頁。您可以使用FindControl獲取當前的btnPage值。

希望有幫助!

0
protected void repeaterPager_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 

    //Enabled False for current selected Page index 
    LinkButton lnkPage = (LinkButton)e.Item.FindControl("btnPage"); 
    if (lnkPage.CommandArgument.ToString() == (CurrentPage+1).ToString()) 
    { 
     lnkPage.Enabled = false; 
     lnkPage.BackColor = System.Drawing.Color.FromName("#FFCC01"); 
    } 

} 
相關問題