Çalışmalarımızda yeri geldiğinde sıkça sayfalama metodunu kullanıyoruz. Bir listedeki verileri belirli kriterlere göre listeledikten sonra sayfalayıp hem okunmasını hemde tasarımsal öğelerin yerli yerinde kullanılmasına büyük ölçüde katkı sağlıyor. Biz bunu asp.net kontrollerinden repeater ile nasıl yapıldığınız inceleyeceğiz.

kod tarafında yapı şu şekilde olacak.

 PagedDataSource pgitems = new PagedDataSource();
        DataView dv = new DataView(dt);
        pgitems.DataSource = dv;
        pgitems.AllowPaging = true;
        pgitems.PageSize = 5;
        pgitems.CurrentPageIndex = PageNumber;
        if (pgitems.PageCount > 1)
        {

            rptPages.Visible = true;
            ArrayList pages = new ArrayList();
            for (int i = 0; i < pgitems.PageCount; i++)
           
                pages.Add((i + 1).ToString());
           
            rptPages.DataSource = pages;
            rptPages.DataBind();
        }
        else
       
            rptPages.Visible = false;
            rptItems.DataSource = pgitems;
            rptItems.DataBind();
      
    }

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



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

    void rptPages_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
        GetNews();
    }


tasarım tarafında da repeater kontrollerini ekleyip uygulamaya aşağıdaki şekilde biçim kazandırabilirsiniz.

  <asp:Repeater ID="rptItems" runat="server">
             
             
            
                <ItemTemplate>
                  <h1><%#DataBinder.Eval(Container.DataItem,"konu") %></h1>
                <p><img src="images/announcement1.jpg" class="float-left"><%#DataBinder.Eval(Container.DataItem,"kisadetay") %></p> 
              
              
           
                <br /> <br /> <br />
                    <p class="post-footer align-right">                   
                    <a href="detay.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id") %>" class="readmore">Read more</a>
                    <span class="date"><%#DataBinder.Eval(Container.DataItem,"tarih") %></span>   
                </p>
               
              </ItemTemplate>
                </asp:Repeater>
                <center>
                 <asp:Repeater ID="rptPages" Runat="server">
      <HeaderTemplate>
      <table cellpadding="0" cellspacing="0" border="0" bgcolor="#E7E7E7">
      <tr bgcolor="#f2f2f2">
         <td colspan="4"><b>Pages:</b>&nbsp;</td>
         <td>
      </HeaderTemplate>
      <ItemTemplate>
         <asp:LinkButton ID="btnPage"
                         CommandName="Page"
                         CommandArgument="<%#
                         Container.DataItem %>"
                        
                         Runat="server"><%# Container.DataItem %>
                         </asp:LinkButton>&nbsp;
      </ItemTemplate>
      <FooterTemplate>
         </td>
      </tr>
      </table>
      </FooterTemplate>
      </asp:Repeater>

 

DB bağlantılarınızı yaptıktan sonra belirttiğim code behind tarafında uygulamayı çalışmanıza ekleyip gerekli SQL bağlantılarını kullanıp repeater kontrolü tarafındaki noktalarda column isimlerini kendinize göre değiştirerek sayfalama metodunu kullanabilirsiniz. Kolay gelsin ...

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList