Makale numarası: 305271 - Son Gözden Geçirme: 13 Mayıs 2007 Pazar - Gözden geçirme: 4.2

Nasıl yapılır: disk belleği DataGrid Windows denetimi ile Visual Basic .NET kullanarak gerçekleştir

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Web DataGrid'i otomatik ya da özel disk belleği yerleşik işlevleri; ancak bu özellikler Windows DataGrid'i yoksun olabilir. Bu makalede, basit bir disk belleği mekanizma DataGrid Windows denetiminin nasıl gösterilmektedir.

Bu makaledeki kod örnekleri DataSet kullanmak olun nesneleri. ADO.NET, DataSet nesneleri tek bir işlemde doldurulur ve bellekte bulunan tüm zaman. Bir DataSet büyük ile çalışıyorsanız, bu makalede programsal olarak bölmek veya sayfaları verileri görüntülemek açıklamaktadır.

Bu teknik, bazı sınırlamalar vardır. Lütfen daha fazla bilgi için Troubleshooting bölümüne bakın.

Gereksinimler

  • Microsoft Visual Basic .NET
  • Microsoft SQL Server Northwind örnek veritabanı

Disk belleği bir DataGrid Windows Denetim ekleme adımları

DataGrid sayfa, sayfa boyutu "birimler" kayıtlarının aynı anda başka bir deyişle, bir sayfa içinde verileri görüntüler. Izlemek için örnek kod DataRow nesneleri için her sayfayı bellekte DataSet geçici tabloya kopyalar. Geçici tabloyu, daha sonra için <a2>DataGrid</a2> denetimi bağlıdır.
  1. Yeni bir Visual Basic .NET Windows uygulaması'nı açın. Varsayılan olarak, Form1 oluşturulur.
  2. DataGrid denetimi ekleyin ve ReadOnly özelliği true olarak ayarlayın.
  3. Form1 ek aşağıdaki denetimlere yerleştirin ve aşağıda gösterildiği gibi özelliklerini ayarlayabilir:
    Bu tabloyu kapaBu tabloyu aç
    DenetimiAdı özelliğiMetin özelliği
    DüğmebtnFirstPageIlk sayfa
    DüğmebtnNextPageSonraki sayfa
    TextBoxtxtDisplayPageNo
    DüğmebtnPreviousPageÖnceki sayfa
    DüğmebtnLastPageSon sayfa
    TextBoxtxtPageSize5
    DüğmebtnFillGridKılavuz doldurun.

  4. Form1'ın genel bildirimi bölümüne aşağıdaki kodu yapıştırın:
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    					
  5. Aşağıdaki kodu önce Form1 için form düzeyi değişkenleri bildirmek için "Windows Form Designer generated" bölge yapıştırın:
        Private da As SqlDataAdapter
        Private ds As DataSet
        Private dtSource As DataTable
        Private PageCount As Integer
        Private maxRec As Integer
        Private pageSize As Integer
        Private currentPage As Integer
        Private recNo As Integer
    					
  6. Load olayı Form1 aşağıdaki otomatik oluşturulan kodu silin.
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles MyBase.Load
    
    End Sub
    					
  7. Aşağıdaki kodu sonra "Windows Form Designer generated" bölge yapıştırın:
    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
    
        'Open Connection.
        Dim conn As SqlConnection = New SqlConnection( _ 
    "Server=(local)\netsdk;uid=sa;pwd=;database=northwind")
    
        'Set the DataAdapter's query.
        da = New SqlDataAdapter("select * from customers", conn)
        ds = New DataSet()
    
        ' Fill the DataSet.
        da.Fill(ds, "customers")
    
        ' Set the source table.
        dtSource = ds.Tables("customers")
    
    End Sub
    
    Private Sub btnNextPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnNextPage.Click
    
        'If the user did not click the "Fill Grid" button then Return
        If Not CheckFillButton() Then Return
    
        'Check if the user clicked the "Fill Grid" button.
        If pageSize = 0 Then
            MessageBox.Show("Set the Page Size, and then click the ""Fill Grid"" button!")
            Return
        End If
    
        currentPage = currentPage + 1
    
        If currentPage > PageCount Then
            currentPage = PageCount
    
            'Check if you are already at the last page.
            If recNo = maxRec Then
                MessageBox.Show("You are at the Last Page!")
                Return
            End If
        End If
    
        LoadPage()
    End Sub
    
    Private Sub btnPreviousPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnPreviousPage.Click
    
        If Not CheckFillButton() Then Return
    
        If currentPage = PageCount Then
            recNo = pageSize * (currentPage - 2)
        End If
    
        currentPage = currentPage - 1
    
        'Check if you are already at the first page.
        If currentPage < 1 Then
            MessageBox.Show("You are at the First Page!")
            currentPage = 1
            Return
        Else
            recNo = pageSize * (currentPage - 1)
        End If
    
        LoadPage()
    End Sub
    
    Private Sub LoadPage()
        Dim i As Integer
        Dim startRec As Integer
        Dim endRec As Integer
        Dim dtTemp As DataTable
        Dim dr As DataRow
    
        'Duplicate or clone the source table to create the temporary table.
        dtTemp = dtSource.Clone
    
        If currentPage = PageCount Then
            endRec = maxRec
        Else
            endRec = pageSize * currentPage
        End If
    
        startRec = recNo
    
        'Copy the rows from the source table to fill the temporary table.
        For i = startRec To endRec - 1
            dtTemp.ImportRow(dtSource.Rows(i))
            recNo = recNo + 1
        Next
    
        DataGrid1.DataSource = dtTemp
        DisplayPageInfo()
    
    End Sub
    
    Private Sub btnFirstPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnFirstPage.Click
    
        If Not CheckFillButton() Then Return
    
        ' Check if you are already at the first page.
        If currentPage = 1 Then
            MessageBox.Show("You are at the First Page!")
            Return
        End If
    
        currentPage = 1
        recNo = 0
    
        LoadPage()
    
    End Sub
    
    Private Sub btnLastPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnLastPage.Click
    
        If Not CheckFillButton() Then Return
    
        ' Check if you are already at the last page.
        If recNo = maxRec Then
            MessageBox.Show("You are at the Last Page!")
            Return
        End If
    
        currentPage = PageCount
    
        recNo = pageSize * (currentPage - 1)
    
        LoadPage()
    
    End Sub
    
    Private Sub DisplayPageInfo()
        txtDisplayPageNo.Text = "Page " & currentPage.ToString & "/ " & PageCount.ToString
    End Sub
    
    Private Sub btnFillGrid_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnFillGrid.Click
    
        'Set the start and max records. 
        pageSize = txtPageSize.Text
        maxRec = dtSource.Rows.Count
        PageCount = maxRec \ pageSize
    
        ' Adjust the page number if the last page contains a partial page.
        If (maxRec Mod pageSize) > 0 Then
            PageCount = PageCount + 1
        End If
    
        'Initial seeings
        currentPage = 1
        recNo = 0
    
        ' Display the content of the current page.
        LoadPage()
    
    End Sub
    
    Private Function CheckFillButton() As Boolean
    
        'Check if the user clicks the "Fill Grid" button.
        If pageSize = 0 Then
            MessageBox.Show("Set the Page Size, and then click the ""Fill Grid"" button!")
            CheckFillButton = False
        Else
            CheckFillButton = True
        End If
    End Function
    					
  8. Kodu <a1>ConnectionString</a1> parametresini, Northwind veritabanındaki, varolan bir örneğine işaret şekilde değiştirin.
  9. Oluşturmak ve proje çalıştırmak için F5 tuşuna basın.
  10. Varsayılan olarak, sayfa boyutu, metin kutusuna değiştirebilecek şekilde 5 kayıtları için ayarlanır.
  11. Kılavuz dolgu ' ı tıklatın. Kılavuz 5 kayıtlarıyla girilir dikkat edin.
  12. Ilk sayfaSonraki sayfa, Önceki sayfa ve Son sayfa arasında sayfalarına gözatmak için tıklatın.

SORUN GİDERME

  • Bu teknik yalnızca, salt okunur DataGrid denetimi çalışır. Bir satır, geçici bir DataTable nesnesine aldığınızda, bir kopyasını oluşturun. Böylece, yaptığınız değişiklikler ana tabloya kaydedilmeyecek.
  • Bu tekniği çalışmaz (ve bu bilgileri bir koleksiyon veya bir dizi yapar.), kullanıcı alt kayıtlarda bir DataRelation nesnesi gitmek için veya aynı anda formda görüntülenen bir üst-altöge ilişkisi içinde bağlı olan kayıtlar varsa.

Referanslar

ADO.NET hakkında daha fazla bilgi için bkz:, aşağıdaki MSDN Web sitesi:
ADO.NET ile verilere erişme
http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)
Daha fazla bilgi için bkz: Microsoft .NET Framework SDK belgelerine:
.NET framework SDK
http://msdn2.microsoft.com/en-us/library/aa719465(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa719465(VS.71).aspx)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 1.0
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbdatabinding kbhowtomaster kbwindowsforms KB305271 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:305271  (http://support.microsoft.com/kb/305271/en-us/ )