/
HomeController.vb
77 lines (73 loc) · 3.73 KB
/
HomeController.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Imports DevExpress.Data.Filtering
Imports DevExpress.Web.Mvc
Imports Example.Example.Models
Public Class HomeController
Inherits System.Web.Mvc.Controller
Public Function Index() As ActionResult
Return View()
End Function
Public Function MasterGridViewPartial() As ActionResult
Dim viewModel = GridViewExtension.GetViewModel("masterGrid")
If viewModel Is Nothing Then
viewModel = CreateMasterGridViewModel()
End If
Return MasterGridActionCore(viewModel)
End Function
Public Function MasterGridViewSortingAction(ByVal column As GridViewColumnState, ByVal reset As Boolean) As ActionResult
Dim viewModel = GridViewExtension.GetViewModel("masterGrid")
viewModel.SortBy(column, reset)
Return MasterGridActionCore(viewModel)
End Function
Public Function MasterGridViewPagingAction(ByVal pager As GridViewPagerState) As ActionResult
Dim viewModel = GridViewExtension.GetViewModel("masterGrid")
viewModel.Pager.Assign(pager)
Return MasterGridActionCore(viewModel)
End Function
Public Function MasterGridActionCore(ByVal gridViewModel As GridViewModel) As ActionResult
gridViewModel.ProcessCustomBinding(AddressOf MasterCustomBindingHandlers.GetDataRowCount, AddressOf MasterCustomBindingHandlers.GetData)
Return PartialView("MasterGridViewPartial", gridViewModel)
End Function
Public Function DetailGridViewPartial(ByVal customerID As String) As ActionResult
Dim viewModel = GridViewExtension.GetViewModel("detailGrid" & customerID)
If viewModel Is Nothing Then
viewModel = CreateDetailGridViewModel(customerID)
End If
Return DetailGridActionCore(viewModel, customerID)
End Function
Public Function DetailGridViewPagingAction(ByVal pager As GridViewPagerState, ByVal customerID As String) As ActionResult
Dim viewModel = GridViewExtension.GetViewModel("detailGrid" & customerID)
viewModel.Pager.Assign(pager)
Return DetailGridActionCore(viewModel, customerID)
End Function
Public Function DetailGridViewSortingAction(ByVal column As GridViewColumnState, ByVal reset As Boolean, ByVal customerID As String) As ActionResult
Dim viewModel = GridViewExtension.GetViewModel("detailGrid" & customerID)
viewModel.SortBy(column, reset)
Return DetailGridActionCore(viewModel, customerID)
End Function
Public Function DetailGridActionCore(ByVal gridViewModel As GridViewModel, ByVal customerID As String) As ActionResult
gridViewModel.ProcessCustomBinding(AddressOf DetailCustomBindingHandlers.GetDataRowCount, AddressOf DetailCustomBindingHandlers.GetData)
ViewData("CustomerID") = customerID
Return PartialView("DetailGridViewPartial", gridViewModel)
End Function
Private Shared Function CreateMasterGridViewModel() As GridViewModel
Dim viewModel = New GridViewModel()
viewModel.KeyFieldName = "CustomerID"
viewModel.Columns.Add("ContactName")
viewModel.Columns.Add("CompanyName")
viewModel.Columns.Add("City")
viewModel.Columns.Add("Country")
Return viewModel
End Function
Private Shared Function CreateDetailGridViewModel(ByVal customerID As String) As GridViewModel
Dim viewModel = New GridViewModel()
viewModel.KeyFieldName = "OrderID"
viewModel.Columns.Add("OrderID")
viewModel.Columns.Add("OrderDate")
viewModel.Columns.Add("ShipName")
viewModel.Columns.Add("ProductName")
viewModel.Columns.Add("Quantity")
viewModel.Columns.Add("UnitPrice")
viewModel.FilterExpression = (New BinaryOperator("CustomerID", customerID)).ToString()
Return viewModel
End Function
End Class