I can't seem to make filtering and sorting work with my RadVirtualGrid. The control itself does the job mostly fine - lightning fast loading of 2000+ rows of data.
I've reduced it to a simple example: a single form with a single RadVirtualGrid, which uses all the code form the online example,
Only different between my simple example and the documented one is that I don't get the objects from a DB - just make them.
The grid populates fine - it's just the filter/sort which does nothing.
I can get the more advanced filter/sort option events to fire OK, but I only need the simple stuff - single column sorts and single column filtering
There's obviously something really simple I've missed -any suggestions ?
Code is:
Imports Telerik.WinControls.UI
Public Class RadForm1
Private columnNames As String() = New String() {"CompanyName", "ContactName", "ContactTitle", "Address", "PostalCode"}
' Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
"..\..\DataSources\Nwind.mdb;Persist Security Info=True" - NOT USED
Private data As New List(Of Customer)()
Private Sub VirtualGridPopulatingWithData_Load(sender As Object, e As EventArgs) Handles Me.Load
AddHandler Me.RadVirtualGrid1.CellValueNeeded, AddressOf radVirtualGrid1_CellValueNeeded
Me.RadVirtualGrid1.ColumnCount = columnNames.Length
SelectData()
End Sub
Private Sub radVirtualGrid1_CellValueNeeded(sender As Object, e As VirtualGridCellValueNeededEventArgs)
If e.ColumnIndex < 0 Then
Return
End If
If e.RowIndex = RadVirtualGrid.HeaderRowIndex Then
e.Value = columnNames(e.ColumnIndex)
End If
If e.RowIndex < 0 Then
e.FieldName = columnNames(e.ColumnIndex)
End If
If e.RowIndex >= 0 AndAlso e.RowIndex < data.Count Then
e.Value = data(e.RowIndex)(e.ColumnIndex)
End If
End Sub
Private Sub SelectData()
data = Customer.makeData
Me.RadVirtualGrid1.RowCount = data.Count
End Sub
End Class
Public Class Customer
Public Shared Function makeData() As List(Of Customer)
Dim someCustomers As New List(Of Customer)
someCustomers.Add(New Customer("1", "Company1", "Fred", "Mr", "addr1", "np7"))
someCustomers.Add(New Customer("2", "Company2", "Bill", "Mr", "addr2", "np8"))
someCustomers.Add(New Customer("3", "Company3", "Andi", "Mrs", "addr0", "np3"))
Return someCustomers
End Function
Public Sub New(customerId As String, companyName As String, contactName As String,
contactTitle As String, address As String, postalCode As String)
Me.CustomerId = customerId
Me.CompanyName = companyName
Me.ContactName = contactName
Me.ContactTitle = contactTitle
Me.Address = address
Me.PostalCode = postalCode
End Sub
Public Property CustomerId() As String
Get
Return m_CustomerId
End Get
Set(value As String)
m_CustomerId = value
End Set
End Property
Private m_CustomerId As String
Public Property CompanyName() As String
Get
Return m_CompanyName
End Get
Set(value As String)
m_CompanyName = value
End Set
End Property
Private m_CompanyName As String
Public Property ContactName() As String
Get
Return m_ContactName
End Get
Set(value As String)
m_ContactName = value
End Set
End Property
Private m_ContactName As String
Public Property ContactTitle() As String
Get
Return m_ContactTitle
End Get
Set(value As String)
m_ContactTitle = value
End Set
End Property
Private m_ContactTitle As String
Public Property Address() As String
Get
Return m_Address
End Get
Set(value As String)
m_Address = value
End Set
End Property
Private m_Address As String
Public Property PostalCode() As String
Get
Return m_PostalCode
End Get
Set(value As String)
m_PostalCode = value
End Set
End Property
Private m_PostalCode As String
Default Public ReadOnly Property Item(i As Integer) As String
Get
Select Case i
Case 0
Return CompanyName
Case 1
Return ContactName
Case 2
Return ContactTitle
Case 3
Return Address
Case 4
Return PostalCode
Case Else
Return [String].Empty
End Select
End Get
End Property
End Class