folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Asp.Net Mssql Verilerini Gelişmiş Sayfalama Örneği



Asp.Net Mssql Verilerini Gelişmiş Sayfalama Örneği

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Asp.Net ve MSSQL ile yaptığınız çalışmalarınızda uzun veriler içeren uygulamalarda gelişmiş sayfalama sistemi örneğimiz.

    Sitil betiklerimiz

    *{margin:0px;padding:0px;border:0px;font-size:100%;font:inherit;vertical-align:baseline;border-spacing:0px;}
            body{font-family:"Arial", Tahoma, Sans-Serif;font-size:12px;color:#545353;}
    
            .kapsul{margin:40px auto 0px auto;width:600px;}
    
            /* Tablo (Başlangıç) */
            .tablo{border-left:1px solid #d1d1d1;border-top:1px solid #d1d1d1;width:599px;}
            .tablo th{background-color:#F6F6F6;border-right:1px solid #d1d1d1;padding:3px 8px;}
            .tablo tr:hover{background:#f2f2f2;}
            .tablo td{background-color:#FEFEFE;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:3px 8px;}
            .tablo td a{text-decoration:none;color:#D9290B;}
            .tablo td a:hover{text-decoration:underline;}
            /* Tablo (Bitiş) */
    
            .ontedi{color:#9A0124;background:#d6d6d6;float:right;padding:0px 3px;line-height:22px;margin-top:8px;text-decoration:none;border-radius:3px 0px 0px 3px;}
    
            /* Sayfalama (Başlangıç) */
            .sayfalama_kapsul{margin:4px 0px 3px 0px;}
            .sayfalama_kapsul a{display:inline-block;float:left;padding:2px 4px;margin-right:1px;font-size:11px;background:#353C44;color:#fff !important;text-decoration:none;letter-spacing:1px;border-radius:3px;}
            .sayfalama_kapsul a:hover{background:#9A0124;color:#fefefe;}
            .sayfalama_kapsul a.secili{background:#9A0124;color:#fefefe !important;}
            /* Sayfalama (Başlangıç) */
    
            /* Kütüphane (Başlangıç) */
            .cb{clear:both;}
            /* Kütüphane (Bitiş) */

    Urunler.aspx dosyamızın içeriği

    <div class="kapsul">
            <asp:Repeater ID="rptListele" runat="server">
                <HeaderTemplate>
                    <table class="tablo">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>Başlık</th>
                                <th>Tarih</th>
                                <th>Durum</th>
                                <th>İşlem</th>
                            </tr>
                        </thead>
                        <tbody>
                </HeaderTemplate>
                <ItemTemplate>
                            <tr>
                                <td><%#Eval("urun_ID")%></td>
                                <td><%#Eval("baslik")%></td>
                                <td><%#fnTarih(Eval("tarih").ToString(), true)%></td>
                                <td><%#fnOnayli_Onaysiz(Eval("durum").ToString())%></td>
                                <td><a href="?islem=urun_duzenle&urun_ID=<%#Eval("urun_ID")%>">Düzenle</a></td>
                            </tr>
                </ItemTemplate>
                <FooterTemplate>
                        </tbody>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
            <asp:Literal ID="ltrSayfalama" runat="server"></asp:Literal>
            <div class="cb"></div>
            <a class="ontedi">www.ontedi.com</a>
        </div>

    Urunler.aspx.cs dosyamızın içeriği

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text.RegularExpressions;
    using System.Configuration;
    using System.Data.SqlClient;
    
    public partial class Urunler : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String strIslem = Request.QueryString["islem"];
    
            fnUrunler();
        }
        public Int32 parAdet = 8;
        private void fnUrunler()
        {
            String strSQL_Kriter = "WHERE durum = 1";
    
            String strKelime = Request.QueryString["kelime"];
            strKelime = fnTemizle(strKelime);
    
            if (String.IsNullOrEmpty(strKelime) == false)
            {
                strSQL_Kriter = "WHERE urun_ID LIKE '%" + strKelime + "%' OR baslik LIKE '%" + strKelime + "%' OR ozet LIKE '%" + strKelime + "%' OR icerik LIKE '%" + strKelime + "%'";
            }
    
            Int32 intGecerli_Sayfa = 1;
    
            String strGecerli_Sayfa = Request.QueryString["gecerli_sayfa"];
            if (fnSayisal_Mi(strGecerli_Sayfa) == true)
            {
                intGecerli_Sayfa = Convert.ToInt32(strGecerli_Sayfa);
            }
    
            Int32 intGosterim_Adeti = parAdet;
            Int32 intToplam_Kayit = fnToplam_Kayit("tblUrunler", strSQL_Kriter);
            Int32 intBaslangic_Degeri = (intGecerli_Sayfa - 1) * intGosterim_Adeti;
            Int32 intBitis_Degeri = intGecerli_Sayfa * intGosterim_Adeti;
            ltrSayfalama.Text = fnSayfalama("?kelime=" + strKelime + "", intGecerli_Sayfa, intToplam_Kayit);
    
            SqlConnection bag = fnMssql();
            SqlCommand cmdSQL = new SqlCommand("SELECT urun_ID, kategori_ID, urun_kodu, baslik, tarih, durum FROM (SELECT row_number() over (order by urun_ID ASC) AS satir, * FROM tblUrunler " + strSQL_Kriter + ") AS tblTablo WHERE tblTablo.satir > " + intBaslangic_Degeri + " AND tblTablo.satir <= " + intBitis_Degeri + " order by urun_ID ASC", bag);
            bag.Open();
            rptListele.DataSource = cmdSQL.ExecuteReader();
            rptListele.DataBind();
            cmdSQL.Dispose();
            bag.Close();
            bag.Dispose();
        }
        public SqlConnection fnMssql()
        {
            SqlConnection bag = new SqlConnection(ConfigurationManager.ConnectionStrings["mssqlDB"].ConnectionString);
            return bag;
        }
        public String fnTemizle(String parVeri)
        {
            if (String.IsNullOrEmpty(parVeri) == false)
            {
                parVeri = parVeri.Replace("'", "");
                parVeri = parVeri.Replace(">", "");
                parVeri = parVeri.Replace("<", "");
                parVeri = parVeri.Replace("%", "");
                parVeri = parVeri.Replace("*", "");
            }
            return parVeri;
        }
        public Boolean fnSayisal_Mi(String parVeri)
        {
            Boolean blnDonen_Deger = false;
            if (String.IsNullOrEmpty(parVeri) == true)
            {
                blnDonen_Deger = false;
            }
            else
            {
                Regex desen = new Regex("^[0-9]*$");
                blnDonen_Deger = desen.IsMatch(parVeri);
            }
            return blnDonen_Deger;
        }
        public String fnSayfalama(String parAdres_Satiri, Int32 parGecerli_Sayfa, Int32 parToplam_Icerik)
        {
            Int32 intSayfa_Alt_Siniri;
            Int32 intSayfa_Ust_Siniri;
            Int32 intSol_Grup_Sayisi;
            Int32 intSag_Alt_Sinir;
    
            float fltSayfa_Sayisi = (float)parToplam_Icerik / parAdet;
            Int32 intSayfa_Sayisi = (Int32)parToplam_Icerik / parAdet;
            String strSayfa_Sayisi = fltSayfa_Sayisi.ToString();
    
            if (strSayfa_Sayisi.IndexOf(",", 0) > -1 || strSayfa_Sayisi.IndexOf(".", 0) > -1)
            {
                intSayfa_Sayisi += 1;
            }
    
            String strDonen_Deger = "<div class=\"sayfalama_kapsul\">";
    
            if (parGecerli_Sayfa <= intSayfa_Sayisi)
            {
                Int32 intSayfa_Araligi = 2;
    
                intSayfa_Alt_Siniri = parGecerli_Sayfa - intSayfa_Araligi;
                intSayfa_Ust_Siniri = parGecerli_Sayfa + intSayfa_Araligi;
                intSol_Grup_Sayisi = 1 + intSayfa_Araligi;
                intSag_Alt_Sinir = intSayfa_Sayisi - intSayfa_Araligi;
    
                //Adım 1
                if (intSayfa_Ust_Siniri > intSayfa_Sayisi)
                {
                    intSayfa_Alt_Siniri = intSayfa_Sayisi - (2 * intSayfa_Araligi);
                    intSayfa_Ust_Siniri = intSayfa_Sayisi;
                }
    
                //Adım 2
                if (intSayfa_Alt_Siniri <= 0)
                {
                    intSayfa_Alt_Siniri = 1;
                    intSayfa_Ust_Siniri = intSayfa_Alt_Siniri + (2 * intSayfa_Araligi);
                    if (intSayfa_Ust_Siniri >= intSayfa_Sayisi)
                    {
                        intSayfa_Ust_Siniri = intSayfa_Sayisi;
                    }
                }
    
                //Adım 3
                if (intSol_Grup_Sayisi >= intSayfa_Alt_Siniri)
                {
                    intSol_Grup_Sayisi = intSayfa_Alt_Siniri - 1;
                }
    
                //Adım 4
                if (intSag_Alt_Sinir <= intSayfa_Ust_Siniri)
                {
                    intSag_Alt_Sinir = intSayfa_Ust_Siniri + 1;
                }
    
                //Adım 5
                if (parGecerli_Sayfa > 1)
                {
                    strDonen_Deger += "<a href=\"" + parAdres_Satiri + "1\" title=\"İlk Sayfa\">[«]</a>";
                    Int32 intOnceki_Sayfa = parGecerli_Sayfa - 1;
                    strDonen_Deger += "<a href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + intOnceki_Sayfa + "\" title=\"Önceki Sayfa\">[««]</a>";
                }
    
                //Adım 6
                for (Int32 i = 1; i < intSol_Grup_Sayisi + 1; i++)
                {
                    if (i == parGecerli_Sayfa)
                    {
                        strDonen_Deger += "<a title=\"" + i + ". Sayfa\" class=\"secili\">" + i + "</a>";
                    }
                    else
                    {
                        strDonen_Deger += "<a title=\"" + i + ". Sayfa\" href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + i + "\">" + i + "</a>";
                    }
                }
    
                //Adım 7
                if (intSayfa_Alt_Siniri - intSol_Grup_Sayisi > 1)
                {
                    strDonen_Deger += "<a>. . .</a>";
                }
    
                //Adım 8
                for (Int32 i = intSayfa_Alt_Siniri; i < intSayfa_Ust_Siniri + 1; i++)
                {
                    if (i == parGecerli_Sayfa)
                    {
                        strDonen_Deger += "<a title=\"" + i + ". Sayfa\" class=\"secili\">" + i + "</a>";
                    }
                    else
                    {
                        strDonen_Deger += "<a title=\"" + i + ". Sayfa\" href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + i + "\">" + i + "</a>";
                    }
                }
    
                //Adım 9
                if (intSag_Alt_Sinir - intSayfa_Ust_Siniri > 1)
                {
                    strDonen_Deger += "<a>. . .</a>";
                }
    
                //Adım 10
                for (Int32 i = intSag_Alt_Sinir; i < intSayfa_Sayisi + 1; i++)
                {
                    if (i == parGecerli_Sayfa)
                    {
                        strDonen_Deger += "<a title=\"" + i + ". Sayfa\" class=\"secili\">" + i + "</a>";
                    }
                    else
                    {
                        strDonen_Deger += "<a title=\"" + i + ". Sayfa\" href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + i + "\">" + i + "</a>";
                    }
                }
    
                //Adım 11
                if (parGecerli_Sayfa != intSayfa_Sayisi)
                {
                    Int32 intSonraki_Sayfa = parGecerli_Sayfa += 1;
                    strDonen_Deger += "<a href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + intSonraki_Sayfa + "\" title=\"Sonraki Sayfa\">[»]</a>";
                    strDonen_Deger += "<a href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + intSayfa_Sayisi + "\" title=\"En Son Sayfa\">[»»]</a>";
                }
            }
            strDonen_Deger += "</div>";
            return strDonen_Deger;
        }
        public Int32 fnToplam_Kayit(String parTablo, String parKriter)
        {
            Int32 intDonen_Deger = 0;
            if (String.IsNullOrEmpty(parTablo) == false)
            {
                if (String.IsNullOrEmpty(parKriter) == false)
                {
                    SqlConnection bag = fnMssql();
                    SqlCommand cmdSQL = new SqlCommand("SELECT Count(*) AS T FROM " + parTablo + " " + parKriter + "", bag);
                    bag.Open();
                    SqlDataReader drSQL = cmdSQL.ExecuteReader();
                    if (drSQL.HasRows == true)
                    {
                        drSQL.Read();
                        {
                            String strToplam = drSQL["T"].ToString();
                            if (fnSayisal_Mi(strToplam) == true)
                            {
                                intDonen_Deger = Convert.ToInt32(strToplam);
                            }
                        }
                    }
                    else
                    {
                        intDonen_Deger = 0;
                    }
                    drSQL.Dispose();
                    cmdSQL.Dispose();
                    bag.Close();
                    bag.Dispose();
                }
            }
            return intDonen_Deger;
        }
        public String fnTarih(String parTarih, Boolean blnSaat)
        {
            String strDonen_Deger = "";
            try
            {
                String[] arrAylar = { "", "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" };
                String[] arrGunler = { "Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" };
                DateTime dtmTarih = DateTime.Parse(parTarih);
                String strTarih = dtmTarih.ToString("yyyy-MM-dd HH:mm");
                Int32 intYil = dtmTarih.Year;
                String strYil = intYil.ToString();
                Int32 intAy = dtmTarih.Month;
                String strAy = arrAylar[intAy];
                Int32 intGun = dtmTarih.Day;
                String strGun = intGun.ToString();
                String strZaman = dtmTarih.ToShortTimeString();
                Int32 intHaftanin_Gunu = (Int32)dtmTarih.Date.DayOfWeek;
                String strGun_Adi = arrGunler[intHaftanin_Gunu];
                strDonen_Deger = strGun + " " + strAy + " " + strYil + " " + strGun_Adi;
                if (blnSaat == true)
                {
                    strDonen_Deger = strDonen_Deger + ", " + strZaman;
                }
            }
            catch
            {
    
            }
            return strDonen_Deger;
        }
        public String fnOnayli_Onaysiz(String parVeri)
        {
            String strDonen_Deger = "";
            if (parVeri == "True")
            {
                strDonen_Deger = "<span style=\"color:green;\">Onaylı</span>";
            }
            if (parVeri == "False")
            {
                strDonen_Deger = "<span style=\"color:red;\">Onaysız</span>";
            }
            return strDonen_Deger;
        }
    }


    mutfakDB adlı veritabanında tblUrunler adlı tablomuzun tsql kodları

    CREATE TABLE tblUrunler (
    [urun_ID] int PRIMARY KEY NOT NULL IDENTITY(1,1),
    [baslik] nvarchar(255),
    [ozet] nvarchar(MAX),
    [icerik] nvarchar(MAX),
    [tarih] datetime NULL DEFAULT getdate(),
    [okunma] int NULL DEFAULT 0,
    [sira] int DEFAULT 0,
    [durum] bit NULL DEFAULT 0
    )

    web.config dosyasının içeriği

    <?xml version="1.0"?>
    <configuration>
      <connectionStrings>
        <add name="mssqlDB" connectionString="Data Source=localhost;Initial Catalog=mutfakDB;User ID=sa;Password=1234" providerName="System.Data.SqlClient"/>
      </connectionStrings>
      <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true" targetFramework="4.0">
          <assemblies>
            <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
          </assemblies>
        </compilation>
        <httpRuntime requestValidationMode="2.0"/>
      </system.web>
      <system.webServer>
        <staticContent>
          <mimeMap fileExtension=".coffee" mimeType="coffeescript"/>
          <mimeMap fileExtension=".woff" mimeType="application/x-font-woff"/>
        </staticContent>
      </system.webServer>
    </configuration>

    Projemizin görünümü

    http://i.hizliresim.com/VpEOzq.png

    Bol sayfalamalı günler :)

    http://www.ontedi.com/aspnet/aspnet-mssql-verilerini-gelismis-sayfalama-ornegi


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    eline sağlık hocam 

    entity frameworkle veri basmak yerine ilkel olan bu yontem performans açısından çok daha iyi bence

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    Seni döverim hocam. Adres ver evine bomba atalım. Parmaklarını kesip birdaha kod yazdırmam!

    Tabi işin şakası ama çok sinirlendim hocam. Neden SQL Parameter kullanmıyorsun? 


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Entity ile uğraşmışlığım yok, kendimce kütüphane oluşturdum ve yaptığım uygulama/sitelerde kütüphanemi kullanıp hızlı ve performanslı çözümler üretmeye çalışıyorum.

     

    SQL Parametre olayı birgün sorun çıkarmıştı, o yüzden kullanmadım. Zaten gelen değerleri filtreden geçiriyorum.

     

    İlginize teşekkürler.

    ontedi tarafından 01/Haz/14 20:15 tarihinde düzenlenmiştir

    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
Toplam Hit: 985 Toplam Mesaj: 4