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.
- Yeni bir Visual Basic .NET Windows uygulaması'nı açın. Varsayılan olarak, Form1 oluşturulur.
- DataGrid denetimi ekleyin ve ReadOnly özelliği true olarak ayarlayın.
- Form1 ek aşağıdaki denetimlere yerleştirin ve aşağıda gösterildiği gibi özelliklerini ayarlayabilir:
Bu tabloyu kapaBu tabloyu aç
| Denetimi | Adı özelliği | Metin özelliği |
|---|
| Düğme | btnFirstPage | Ilk sayfa |
| Düğme | btnNextPage | Sonraki sayfa |
| TextBox | txtDisplayPageNo | |
| Düğme | btnPreviousPage | Önceki sayfa |
| Düğme | btnLastPage | Son sayfa |
| TextBox | txtPageSize | 5 |
| Düğme | btnFillGrid | Kılavuz doldurun. |
- 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
- 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
- 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
- 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
- Kodu <a1>ConnectionString</a1> parametresini, Northwind veritabanındaki, varolan bir örneğine işaret şekilde değiştirin.
- Oluşturmak ve proje çalıştırmak için F5 tuşuna basın.
- Varsayılan olarak, sayfa boyutu, metin kutusuna değiştirebilecek şekilde 5 kayıtları için ayarlanır.
- Kılavuz dolgu ' ı tıklatın. Kılavuz 5 kayıtlarıyla girilir dikkat edin.
- 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.
ADO.NET hakkında daha fazla bilgi için bkz:, aşağıdaki MSDN Web sitesi:
Daha fazla bilgi için bkz: Microsoft .NET Framework SDK belgelerine: