Protected Sub RadAjaxManager1_AjaxRequest(ByVal sender As Object, ByVal e As AjaxRequestEventArgs) Handles RadAjaxManager1.AjaxRequest |
Dim arguments As String() = e.Argument.Split(":") |
Dim columnToFilter As GridColumn = CType(RadGrid1.MasterTableView.AutoGeneratedColumns(Integer.Parse(arguments(1))), GridColumn) |
|
BindFilterMenuRecords(columnToFilter.UniqueName) |
End Sub |
Protected Sub BindFilterMenuRecords(ByVal columnName As String) |
|
Dim filterMenuData As DataTable = GetDataTable("SELECT DISTINCT TOP 40 " & columnName & " FROM Customers") |
Dim row As DataRow |
Dim menuItem As RadMenuItem |
|
RadMenu1.Items.Clear() |
|
Dim rootItem As RadMenuItem = New RadMenuItem("Show filter options") |
rootItem.GroupSettings.Flow = ItemFlow.Vertical |
rootItem.GroupSettings.Height = Unit.Pixel(300) |
|
RadMenu1.Items.Add(rootItem) |
|
For Each row In filterMenuData.Rows |
menuItem = New RadMenuItem() |
menuItem.Text = row(columnName).ToString() |
menuItem.Value = columnName |
rootItem.Items.Add(menuItem) |
Next |
|
rootItem.Items.Insert(0, New RadMenuItem("All")) |
|
RadAjaxManager1.ResponseScripts.Add("DisplayFilterMenu(this)") |
End Sub |
Public Function GetDataTable(ByVal query As String) As DataTable |
Dim connection1 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & System.Web.HttpContext.Current.Server.MapPath("~/Grid/Data/Access/NWind.mdb")) |
Dim adapter1 As New OleDbDataAdapter |
adapter1.SelectCommand = New OleDbCommand(query, connection1) |
Dim table1 As New DataTable |
connection1.Open() |
Try |
adapter1.Fill(table1) |
Finally |
connection1.Close() |
End Try |
Return table1 |
End Function |
Protected Sub RadMenu1_ItemClick(ByVal sender As Object, ByVal e As RadMenuEventArgs) Handles RadMenu1.ItemClick |
If (e.Item.Text = "All") Then |
RadGrid1.MasterTableView.FilterExpression = String.Empty |
RadGrid1.MasterTableView.Rebind() |
ElseIf (Not e.Item.Text = "Show filter options") |
Dim columnUniqueName As String = e.Item.Value |
AccessDataSource1.SelectCommand = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode FROM Customers WHERE " & columnUniqueName & " = '" & e.Item.Text & "'" |
RadGrid1.MasterTableView.Rebind() |
End If |
End Sub |
|