0

PagedDataSource To Paginate Repeater を使用していますが、正常に動作しますが、選択したページ番号を強調表示したり、太字にしたりする方法はありますか。css、itemcommand、click イベントを試しましたがうまくいきませんでした。

前もって感謝します

リピータ:

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

  }
}
4

2 に答える 2

0

ロジック: ItemDataBound イベントを使用して、現在のページを btnPage の現在の値と比較します。FindControl を使用して、現在の btnPage 値を取得できます。

それが役立つことを願っています!

于 2013-02-05T06:47:36.003 に答える
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");
    }

}
于 2015-07-08T11:15:18.857 に答える