• 04-09-2007, 14:58:06
    #1
    arkadaşlar vb den anlayan arkadaş varsa ve cevaplarsa çok senirim...tam 1 haftadır uğraşıyorum ama nedense datalistte sayfalama olayını bir türlü yapamadım...kullandığım kodlar aşağıda..

    Namespace datalist
        ''' <summary> 
        ''' Summary description for WebForm1. 
        ''' </summary> 
        Public Class WebForm1
            Inherits System.Web.UI.Page
            Protected DataList1 As System.Web.UI.WebControls.DataList
            Protected TextBox1 As System.Web.UI.WebControls.TextBox
            Protected TextBox2 As System.Web.UI.WebControls.TextBox
            Protected LinkButton1 As System.Web.UI.WebControls.LinkButton
            Protected LinkButton2 As System.Web.UI.WebControls.LinkButton
    
            Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
                If Not IsPostBack Then
                    TextBox1.Text = "0"
                    TextBox2.Text = "1"
                    Build_List()
                End If
            End Sub
            Private Sub Build_List()
                Try
                    Dim dsn As String = "ASPNETDBConnectionString1"
                    Dim ocon As New SqlConnection(dsn)
                    ocon.Open()
                    Dim strsql As String = "select * from Abonozer_Sertifica"
                    Dim oda As New SqlDataAdapter(strsql, ocon)
                    Dim ods As New DataSet()
                    Dim index As Integer = Integer.Parse(TextBox1.Text)
                    oda.Fill(ods, 4, 4, "contact")
                    DataList1.DataSource = ods.Tables("contact").DefaultView
                    DataList1.DataBind()
    
                    ocon.Close()
                Catch ex As Exception
                    Response.Write(ex.Message + " " + ex.StackTrace)
                End Try
            End Sub
    
    #Region "Web Form Designer generated code"
            Protected Overloads Overrides Sub OnInit(ByVal e As EventArgs)
                ' 
                ' CODEGEN: This call is required by the ASP.NET Web Form Designer. 
                ' 
                InitializeComponent()
                MyBase.OnInit(e)
            End Sub
    
            ''' <summary> 
            ''' Required method for Designer support - do not modify 
            ''' the contents of this method with the code editor. 
            ''' </summary> 
            Private Sub InitializeComponent()
                AddHandler Me.LinkButton1.Click, AddressOf LinkButton1_Click
                AddHandler Me.LinkButton2.Click, AddressOf LinkButton2_Click
                AddHandler Me.Load, AddressOf Page_Load
    
            End Sub
    #End Region
    
            Private Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
                Dim index As Integer = Integer.Parse(TextBox1.Text)
                index -= 1
                TextBox1.Text = index.ToString()
                Build_List()
            End Sub
    
            Private Sub LinkButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
                Dim index As Integer = Integer.Parse(TextBox1.Text)
                index += 1
                TextBox1.Text = index.ToString()
                Build_List()
    
            End Sub
        End Class
    End Namespace
    sayafada tüm ürünleri gösterebiliyorum sorun yok...sorun bu ürünlerin sayfada 10 ar 10 ar çıkması gerekiyor...diğerleri sayfalama şeklinde çıkması gerekiyor...aynı googledeki gibi...arama yaptığımız zaman altta sayfalar çıkıyor sayfa başına 10 adet link çıkıyor...yapmaya çalıştığım olay o....ama ne yaptımsa olmadı...ürünlerin tamamı aynı sayfada çıkıyor...yardımcı olabilecek arkadaş varsa ilgilenirse çok sevinirim...saygılar
  • 05-09-2007, 18:26:48
    #2
    veri tabanının tipini ve büyüklüğünü bilmiyorum. fakat 100.000 kayıt bulunan bir veritabanından dataset + datalist ile listelemek cpu yu aşırı kasar.

    Kendi video sitemde aranan kelimeler (yaklaşık 150.000 record) için kullandığım bir class var. istersen bunu kullanabilirsin. cpu ve ram ide şişirmez.

    classın bir kısmını anlayabileceğin şekilde basitleştirilmiş halini veriyorum. projene istediğin şekilde dahil edebilirsin. Örnek Asp.Net 2.0 + Mssql Server içindir.

    Tablo yapısı
    id         |      text       |     hit
    ------------------------------------------
    int (P.U)  |  varchar(255)   |     int
    Kod
        Dim DbdenGelen As String
        Dim DbBag As SqlConnection
        Dim DbBagString As String = ConfigurationManager.ConnectionStrings("MsSql").ConnectionString
        DbBag = New SqlConnection(DbBagString)
        DbBag.Open()
        Dim DbKomut = New SqlDataAdapter("select id from arananlar", DbBag)
        Dim DS = New DataSet()
        DbKomut.Fill(DS)
        Dim ToplamKayit = DS.Tables(0).Rows.Count.ToString()
        DS = Nothing
        DbKomut.Dispose()
        DbKomut = Nothing
        Dim SayfaNo = Request.QueryString("sayfa")
        Dim intPage As String = SayfaNo
        If intPage = "" Or Not IsNumeric(intPage) Or intPage = "0" Then
            intPage = Int(1)
        Else
            intPage = Int(intPage)
        End If
        ' Burada kaçar kaçar listeleneceğini belirtiyorsun
        Dim intPageSize As Integer = Int(10)
        Dim intPageSizeA As Integer = intPageSizeA
        Session.LCID = "1055"
        Dim intPages As Integer
        If InStr(ToplamKayit / intPageSize, ",") = 0 Then
            intPages = Int(ToplamKayit / intPageSize)
        Else
            intPages = Int(ToplamKayit / intPageSize) + 1
        End If
        If intPage > intPages Then intPage = intPages
        Dim intStart As Integer = intPage * intPageSize
        If intPage = intPages Then
            intPageSize = ToplamKayit - (intStart - intPageSize)
        End If
        If intStart = 0 Then intStart = IntPageSizeA
        DbKomut = New SqlCommand("select * from ( select top " & intPageSize & " * from (select top " & intStart & " * from arananlar order by id desc ) as newtbl order by id asc) as newtbl2 order by id desc", DbBag)
        Dim AlinanVeriL As SqlDataReader
        AlinanVeriL = DbKomut.ExecuteReader()
        While AlinanVeriL.Read
               DbdenGelen = DbdenGelen + AlinanVeriL.Item("text")
        End While
        AlinanVeriL.Close()
        DbKomut.Dispose()
        AlinanVeriL = Nothing
        DbKomut = Nothing
        If intPage > 1 Then
            DbdenGelen = DbdenGelen + "<a href=""arananlar.aspx?sayfa=" & intPage - 1 & """> &lt; geri</a>"
        End If
        If intPage < intPages Then
            DbdenGelen = DbdenGelen + "<a href=""arananlar.aspx?sayfa=" & intPage + 1 & """> ileri &gt; </a>"
        End If
        DbBag.Close()
        DbBag.Dispose()
        DbBag = Nothing
    mantığını görmen açısından kodu verdim. esasen kod c# dir, vb.net e çevirirken yazım yanlışım olmuş olabilir, umarım yardımcı olmuşumdur.
  • 05-09-2007, 21:07:42
    #3
    ilgine teşekkürler dodstum....veri tabanım pek büyük olmayacak...en fazla 1000 kayıtlık bir veri tabanı...bu nedenle dataset ve datalist kullanakta sakınca görmedim...bir yrede hata yapıyorum ama o kısmı hala bulamadım...page_load kısmına ne yazarsam yazayım oradakileri okumuyor sanki...sadece datalist i çıkarıyor karşıma...oradaki resimleri sıralıyor istediğim gibi 4 er li gruplar halinde...ama sayfalamayı yapmıyor...sadece datalisttekilerin tamamını çıkırıyor..işte bukısım beni deli ediyor...datalisti sayfalamıyor ....
  • 16-10-2007, 11:05:51
    #4
    html kısmında datalist'in dataSouceId property sinde birşeyler varsa senin yazdıklarını kaale almaz.

    sqlAd.Fill(dataset, başlangıç, adet, "liste")

    bence html kodunu kontrol et sonra yukardaki formatta ayarla kodunu.
  • 19-01-2008, 02:41:59
    #5
    akyaz hocam kodların C# halini de eklermisin aynı sayfaya .tşk ederim.