DataList Sayfalama-2
Bu örneğimizde Datalist nesnemizi nümerik olarak indekslemeyi göreceğiz. Default.aspx sayfanıza 1 adet DataList, TextBox ve 5 adet Label ekleyin. Şekil 1 deki gibi oluşturun. TextBox ın ismini txtStart yapın. TextBox ta sayfanın başlangıç durumunu tutacağız. Northwind veritabanındaki Customers tablosundaki verileri göstereceğiz.
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
public partial class _Default : System.Web.UI.Page
{
private int Baslangic = 1; // Görüntülenecek olan Sayfanın numarası
private int SayfadakiKayitSayisi = 4;//Sayfada görüntülenecek olan kayıt sayısı
private int BaslangicKaydi;//Databaseden çekilen datada baslanacak olan kaydın sayısı
private int ToplamSayfaSayisi;//Toplam sayfa sayısı
private int ToplamKayitSayisi()// Toplam kayıt sayısını geri döndüren bir fonksiyon yazarız.
{
OleDbConnection baglan = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" + Server.MapPath("App_Data//Northwind.mdb"));
baglan.Open();
OleDbCommand cmd = new OleDbCommand("Select Count(*) From Customers", baglan);
int GeciciKayitSayisi = Convert.ToInt32(cmd.ExecuteScalar());
baglan.Close();
return GeciciKayitSayisi;
}
protected void DatayiDoldur()
{
Baslangic = Convert.ToInt32(txtStart.Text);
BaslangicKaydi = (Baslangic * SayfadakiKayitSayisi) - SayfadakiKayitSayisi;
OleDbConnection baglan = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" + Server.MapPath("App_Data//Northwind.mdb"));
baglan.Open();
OleDbDataAdapter Da =new OleDbDataAdapter("Select * From Customers", baglan);
DataSet ds = new DataSet();
Da.Fill(ds, BaslangicKaydi, SayfadakiKayitSayisi, "Customers");
DataList1.DataSource = ds.Tables[0].DefaultView;
DataList1.DataBind();
baglan.Close();
}
protected void Bilgiler()
{
//Konuyu daha iyi anlamak için kullandıgımız degiskenleri ekrana bastık
Label4.Text = BaslangicKaydi.ToString();
Label5.Text = SayfadakiKayitSayisi.ToString(); ;
Label6.Text = ToplamKayitSayisi().ToString();
Label7.Text = ToplamSayfaSayisi.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
Label8.Text = "";
txtStart.Visible = false;
if (ToplamKayitSayisi() % SayfadakiKayitSayisi == 0)
{
ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi;
}
{
ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi + 1;
}
DatayiDoldur();
if (!Page.IsPostBack)
{
// Numeric Sayfalama Bilgileri Olusturuluyor
int i;
for (i = 1; i <= ToplamSayfaSayisi; i++)
{
Label8.Text = Label8.Text + "<a href=default.aspx?sayfa=" + i + ">" + i + "</a>|";
}
try
{
Baslangic = int.Parse(Request.QueryString["sayfa"].ToString()); // burada queryden gelen degeri alıyoruz
txtStart.Text = Baslangic.ToString();
DatayiDoldur();//data yenileniyor
}
catch //sayfa ilk açıldıgında querystring bos olacagından hata vermemesi için ve ilk kayıttan baslaması için basalangic degiskenine 1 degerini atarız.
{
Baslangic = 1;
}
}
Bilgiler();
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DataList Nesnesi Nümerik Indeksleme</title>
<script language="JavaScript">
self.resizeTo(("500"), ("600"))
function penac(theURL, winName, features) {
window.open(theURL, winName, features);
}
// -->
</script>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr><td><b style="font-family: Tahoma; color: #3399FF">Başlangıç Kayıt Sayısı:</b> <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>|</td>
<td><b style="font-family: Tahoma; color: #3399FF">Görüntülenen Kayıt Sayısı:</b> <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>|</td></tr>
<tr><td><b><b style="font-family: Tahoma; color: #3399FF">Toplam Kayıt Sayısı:</b> </b><asp:Label ID="Label6" runat="server" Text="Label"></asp:Label>|</td>
<td><b><b style="font-family: Tahoma; color: #3399FF">Toplam Sayfa Sayısı:</b></b> <asp:Label ID="Label7" runat="server" Text="Label"></asp:Label></td></tr>
</table>
<p>
</p>
<asp:DataList ID="DataList1" runat="server" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Names="Verdana" Font-Size="X-Small" GridLines="Horizontal" RepeatLayout="Flow">
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0" style="width: 392px">
<tr>
<td style="width: 129px; height: 19px">
<asp:Label ID="Label3" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Small"
Text="Customer ID"></asp:Label></td>
<td style="width: 17px; height: 19px">
:</td>
<td style="width: 300px; height: 19px">
<asp:Label ID="lblCustomerID" Text='<%# DataBinder.Eval(Container.DataItem,"CustomerID") %>' runat="server" Font-Names="Tahoma" Font-Size="Small"></asp:Label></td>
</tr>
<tr>
<td style="width: 129px; height: 19px">
<asp:Label ID="Label2" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Small"
Text="Company Name"></asp:Label></td>
<td style="width: 17px; height: 19px">
.</td>
<td style="width: 300px; height: 19px">
<asp:Label ID="lblCompanyName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"CompanyName") %>' Font-Names="Tahoma" Font-Size="Small"></asp:Label></td>
</tr>
<tr>
<td style="width: 129px; height: 19px">
<asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Names="Tahoma" Font-Size="Small"
Text="Contact Name"></asp:Label></td>
<td style="width: 17px; height: 19px">
:</td>
<td style="width: 300px; height: 19px">
<asp:Label ID="lblContactName" runat="server" Font-Names="Tahoma" Text='<%# DataBinder.Eval(Container.DataItem,"ContactName") %>' Font-Size="Small"></asp:Label></td>
</tr>
<tr>
<td style="width: 129px; height: 19px">
</td>
<td style="width: 17px; height: 19px">
</td>
<td align="right" style="width: 300px; height: 19px">
</tr>
</table>
</ItemTemplate>
<AlternatingItemStyle BackColor="#F7F7F7" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<ItemStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<EditItemTemplate>
</EditItemTemplate>
</asp:DataList>
<br /> <br />
<asp:Label ID="Label8" runat="server" Text="Label"></asp:Label>
<div>
</div>
<asp:TextBox ID="txtStart" runat="server">1</asp:TextBox>
</form>
</body>
</html>
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşünceye kadar hoş cakalın. Bahadır ŞAHİN