1+ @page " /CustomBinding"
2+
3+ @using Syncfusion .Blazor
4+ @using Syncfusion .Blazor .Data
5+ @using Syncfusion .Blazor .Grids
6+
7+ <SfGrid TValue =" Order" ID =" Grid" AllowSorting =" true" AllowFiltering =" true" AllowPaging =" true" Toolbar =" @(new List<string>() { " Add " , " Delete " , " Update " , " Cancel " })" >
8+ <SfDataManager AdaptorInstance =" @typeof(CustomAdaptor)" Adaptor =" Adaptors.CustomAdaptor" ></SfDataManager >
9+ <GridPageSettings PageSize =" 8" ></GridPageSettings >
10+ <GridEditSettings AllowEditing =" true" AllowDeleting =" true" AllowAdding =" true" Mode =" @EditMode.Normal" ></GridEditSettings >
11+ <GridColumns >
12+ <GridColumn Field =@nameof(Order.OrderID) HeaderText =" Order ID" IsPrimaryKey =" true" TextAlign =" @TextAlign.Center" Width =" 140" ></GridColumn >
13+ <GridColumn Field =@nameof(Order.CustomerID) HeaderText =" Customer Name" Width =" 150" ></GridColumn >
14+ <GridColumn Field =@nameof(Order.Freight) HeaderText =" Freight" Width =" 150" ></GridColumn >
15+ </GridColumns >
16+ </SfGrid >
17+
18+ @code {
19+ public static List <Order > Orders { get ; set ; }
20+
21+ protected override void OnInitialized ()
22+ {
23+ Orders = Enumerable .Range (1 , 75 ).Select (x => new Order ()
24+ {
25+ OrderID = 1000 + x ,
26+ CustomerID = (new string [] { " ALFKI" , " ANANTR" , " ANTON" , " BLONP" , " BOLID" })[new Random ().Next (5 )],
27+ Freight = 2 . 1 * x ,
28+ }).ToList ();
29+ }
30+
31+ public class Order
32+ {
33+ public int OrderID { get ; set ; }
34+ public string CustomerID { get ; set ; }
35+ public double Freight { get ; set ; }
36+ }
37+
38+ // Implementing custom adaptor by extending the DataAdaptor class
39+ public class CustomAdaptor : DataAdaptor
40+ {
41+ // Performs data Read operation
42+ public override object Read (DataManagerRequest dm , string key = null )
43+ {
44+ IEnumerable < Order > DataSource = Orders ;
45+ if (dm .Search != null && dm .Search .Count > 0 )
46+ {
47+ // Searching
48+ DataSource = DataOperations .PerformSearching (DataSource , dm .Search );
49+ }
50+ if (dm .Sorted != null && dm .Sorted .Count > 0 )
51+ {
52+ // Sorting
53+ DataSource = DataOperations .PerformSorting (DataSource , dm .Sorted );
54+ }
55+ if (dm .Where != null && dm .Where .Count > 0 )
56+ {
57+ // Filtering
58+ DataSource = DataOperations .PerformFiltering (DataSource , dm .Where , dm .Where [0 ].Operator );
59+ }
60+ int count = DataSource .Cast <Order >().Count ();
61+ if (dm .Skip != 0 )
62+ {
63+ // Paging
64+ DataSource = DataOperations .PerformSkip (DataSource , dm .Skip );
65+ }
66+ if (dm .Take != 0 )
67+ {
68+ DataSource = DataOperations .PerformTake (DataSource , dm .Take );
69+ }
70+ return dm .RequiresCounts ? new DataResult () { Result = DataSource , Count = count } : (object )DataSource ;
71+ }
72+
73+ // Performs Insert operation
74+ public override object Insert (DataManager dm , object value , string key )
75+ {
76+ Orders .Insert (0 , value as Order );
77+ return value ;
78+ }
79+
80+ // Performs Remove operation
81+ public override object Remove (DataManager dm , object value , string keyField , string key )
82+ {
83+ Orders .Remove (Orders .Where (or => or .OrderID == int .Parse (value .ToString ())).FirstOrDefault ());
84+ return value ;
85+ }
86+
87+ // Performs Update operation
88+ public override object Update (DataManager dm , object value , string keyField , string key )
89+ {
90+ var data = Orders .Where (or => or .OrderID == (value as Order ).OrderID ).FirstOrDefault ();
91+ if (data != null )
92+ {
93+ data .OrderID = (value as Order ).OrderID ;
94+ data .CustomerID = (value as Order ).CustomerID ;
95+ data .Freight = (value as Order ).Freight ;
96+ }
97+ return value ;
98+ }
99+
100+ // Performs BatchUpdate operation
101+ public override object BatchUpdate (DataManager dm , object Changed , object Added , object Deleted , string KeyField , string Key ,int ? dropIndex )
102+ {
103+ if (Changed != null )
104+ {
105+ foreach (var rec in (IEnumerable <Order >)Changed )
106+ {
107+ Orders [0 ].CustomerID = rec .CustomerID ;
108+ }
109+
110+ }
111+ if (Added != null )
112+ {
113+ foreach (var rec in (IEnumerable <Order >)Added )
114+ {
115+ Orders .Add (rec );
116+ }
117+
118+ }
119+ if (Deleted != null )
120+ {
121+ foreach (var rec in (IEnumerable <Order >)Deleted )
122+ {
123+ Orders .RemoveAt (0 );
124+ }
125+
126+ }
127+ return Orders ;
128+ }
129+ }
130+ }
0 commit comments