This repository has been archived by the owner on Dec 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CustomBindingModel.cs
84 lines (78 loc) · 3.13 KB
/
CustomBindingModel.cs
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
78
79
80
81
82
83
84
using System.Collections.Generic;
using System.Linq;
using DevExpress.Data;
using DevExpress.Data.Filtering;
using DevExpress.Data.Linq;
using DevExpress.Data.Linq.Helpers;
using DevExpress.Web.Mvc;
using GridLookupCustomBinding.Models;
namespace Sample.Models
{
public static class CustomBindingHandlers
{
static NorthwindDataClassesDataContext db = new NorthwindDataClassesDataContext();
static IQueryable<Order> Model { get { return db.Orders; } }
public static void GetDataRowCount(GridViewCustomBindingGetDataRowCountArgs e)
{
e.DataRowCount = Model
.Count();
}
public static void GetDataRowCountIncrementalFiltering(GridViewCustomBindingGetDataRowCountArgs e)
{
e.DataRowCount = Model
.ApplyFilter(e.FilterExpression)
.Count();
}
public static void GetData(GridViewCustomBindingGetDataArgs e)
{
e.Data = Model
.ApplySorting(e.State.SortedColumns)
.Skip(e.StartDataRowIndex)
.Take(e.DataRowCount);
}
public static void GetDataIncrementalFilteng(GridViewCustomBindingGetDataArgs e)
{
e.Data = Model
.ApplyFilter(e.State.AppliedFilterExpression)
.ApplySorting(e.State.SortedColumns)
.Skip(e.StartDataRowIndex)
.Take(e.DataRowCount);
}
public static void GetRowValues(GridViewCustomBindingGetRowValuesArgs e)
{
if (e.KeyValues.Count() == 0)
e.RowValues = Model.Where(c => object.Equals(c.OrderID, -1));
else
{
var list = new List<Order>();
foreach (var item in e.KeyValues)
{
list.Add(Model.Where(c => object.Equals(c.OrderID, item)).FirstOrDefault());
}
e.RowValues = list;
}
}
}
public static class GridViewCustomOperationDataHelper
{
static ICriteriaToExpressionConverter Converter { get { return new CriteriaToExpressionConverter(); } }
public static IQueryable Select(this IQueryable query, string fieldName)
{
return query.MakeSelect(Converter, new OperandProperty(fieldName));
}
public static IQueryable ApplySorting(this IQueryable query, IEnumerable<GridViewColumnState> sortedColumns)
{
foreach (GridViewColumnState column in sortedColumns)
query = ApplySorting(query, column.FieldName, column.SortOrder);
return query;
}
public static IQueryable ApplySorting(this IQueryable query, string fieldName, ColumnSortOrder order)
{
return query.MakeOrderBy(Converter, new ServerModeOrderDescriptor(new OperandProperty(fieldName), order == ColumnSortOrder.Descending));
}
public static IQueryable ApplyFilter(this IQueryable query, string filterExpression)
{
return query.AppendWhere(Converter, CriteriaOperator.Parse(filterExpression));
}
}
}