BİLGİ SAYAMIYORUM beta

Asp.Net de Repeater öğesinde sayfalama nasıl yapılır?

0

Repeater, asp.net de en temiz ve değiştirilebilir veri listeleme öğesi olarak tanımlanabilir. Ama bu sadeliği gridview in aksine özel durumlarla ilgili daha fazla çaba sarfettirmenizi de beraberinde getirir. Veritabanından veri çekerken, sayfalama gibi kolayca yapılabilen bir işlem yapmak bazen uğraştırıcı olabilmektedir. Bu anlamda kullanılabilecek en basit yöntemlerden biri şudur:

 

kod sayfası - .cs 

using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
 
public partial class PagedRepeater : System.Web.UI.Page
{
   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);
   }
 
   protected void Page_Load(object sender, EventArgs e)
   {
      if (!Page.IsPostBack)
      LoadData();
   }
 
   private void LoadData()
   {
      SqlConnection cn = new SqlConnection("baglantıSatırı");
      cn.Open();
      SqlDataAdapter da = new SqlDataAdapter("sqlSorgusu", cn);
      DataTable dt = new DataTable();
      da.Fill(dt);
      cn.Close();
 
      PagedDataSource pgitems = new PagedDataSource();
      DataView dv = new DataView(dt);
      pgitems.DataSource = dv;
 
      pgitems.AllowPaging = true;
      pgitems.PageSize = 25;
      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();
   }
 
   void rptPages_ItemCommand(object source,
                             RepeaterCommandEventArgs e)
   {
      PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
      LoadData();
   }
 
}
 

 

arayüz sayfası - .aspx

<%@ Page Language="C#"
         AutoEventWireup="true"
         CodeFile="pagedrepeater.aspx.cs"
         Inherits="PagedRepeater" %>
<html>
<head><title>Sayfalı Repeater</title>
</head>
<body>
<form runat="server">
      <asp:Repeater ID="rptPages" Runat="server">
      <HeaderTemplate>
      <table cellpadding="0" cellspacing="0" border="0">
      <tr class="text">
         <td><b>Sayfa:</b>&nbsp;</td>
         <td>
      </HeaderTemplate>
      <ItemTemplate>
         <asp:LinkButton ID="btnPage"
                         CommandName="Page"
                         CommandArgument="<%#
                         Container.DataItem %>"
                         CssClass="text"
                         Runat="server"><%# Container.DataItem %>
                         </asp:LinkButton>&nbsp;
      </ItemTemplate>
      <FooterTemplate>
         </td>
      </tr>
      </table>
      </FooterTemplate>
      </asp:Repeater>
 
      <asp:Repeater ID="rptItems" runat="server">
      <HeaderTemplate>
      <ul>
      </HeaderTemplate>
      <ItemTemplate>
      <li><%# Eval("pkItemID") %>: <%# Eval("Description") %></li>
      </ItemTemplate>
      <FooterTemplate>
      </ul>
      </FooterTemplate>
 
      </asp:Repeater>
</form>
</body>
</html> 

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER