9
9
10
10
<TelerikButton OnClick =" @SelectItem" >Select item 48</TelerikButton >
11
11
12
- <TelerikGrid Data =@GridData
12
+ <TelerikGrid @ref =" @GridRef"
13
+ TItem =" @Employee"
14
+ OnRead =" @ReadItems"
13
15
SelectionMode =" GridSelectionMode.Single"
14
16
@bind-SelectedItems =" @SelectedItems"
17
+ Sortable =" true"
15
18
ScrollMode =" @GridScrollMode.Virtual"
16
19
RowHeight =" 40"
17
20
PageSize =" @PageSize"
18
- @ref =" @GridRef"
19
- TotalCount =@Total OnRead =" @ReadItems"
20
- Height =" 300px"
21
- Sortable =" true" >
21
+ Height =" 300px" >
22
22
<GridColumns >
23
23
<GridColumn Field =@nameof(Employee.Name) />
24
24
<GridColumn Field =@nameof(Employee.Team) Title =" Team" />
27
27
28
28
@code {
29
29
string theGridClass { get ; set ; } = " theSpecialGrid" ;
30
- TelerikGrid <Employee > GridRef { get ; set ; }
31
- int Total { get ; set ; }
32
- List < Employee > GridData { get ; set ; }
30
+ TelerikGrid <Employee > GridRef { get ; set ; }
31
+ int GridDataCount { get ; set ; }
32
+ int AllDataCount { get ; set ; }
33
33
int PageSize { get ; set ; } = 20 ;
34
34
DataSourceRequest lastRequest { get ; set ; }
35
35
70
70
// this should actually be happening on the server, but for brevity we do it here
71
71
// see more at https://github.com/telerik/blazor-ui/tree/master/grid/datasourcerequest-on-server
72
72
var datasourceResult = AllData .ToDataSourceResult (args .Request );
73
- GridData = (datasourceResult .Data as IEnumerable <Employee >).ToList ();
74
- Total = datasourceResult .Total ;
73
+ var data = (datasourceResult .Data as IEnumerable <Employee >).ToList ();
74
+ args .Data = data ;
75
+ args .Total = AllDataCount = datasourceResult .Total ;
76
+ GridDataCount = data .Count ;
75
77
76
-
77
- // see more about why this is done here https://docs.telerik.com/blazor-ui/knowledge-base/grid-large-skip-breaks-virtualization
78
+ // see more about why this is done here https://docs.telerik.com/blazor-ui/knowledge-base/grid-large-skip-breaks-virtualization
78
79
int allowedSkip = ValidateSkip (args .Request .Skip );
79
80
if (allowedSkip != args .Request .Skip )
80
81
{
81
82
await SetSkip (allowedSkip );
82
83
}
83
-
84
-
85
- await InvokeAsync (StateHasChanged );
86
84
}
87
85
88
86
async Task SetSkip (int skip )
108
106
{
109
107
if (desiredSkip < 0 ) return 0 ;
110
108
int itemsThatFitPerPage = 7 ; // see how the grid renders and determine this from there
111
- bool isInvalidSkip = GridData . Count < itemsThatFitPerPage ;
112
- return isInvalidSkip ? Total - itemsThatFitPerPage : desiredSkip ;
109
+ bool isInvalidSkip = GridDataCount < itemsThatFitPerPage ;
110
+ return isInvalidSkip ? AllDataCount - itemsThatFitPerPage : desiredSkip ;
113
111
}
114
112
115
113
// data generation follows
120
118
{
121
119
AllData = await DataService .GenerateData ();
122
120
}
123
- }
121
+ }
0 commit comments