|
20 | 20 | @if (Virtualize) |
21 | 21 | { |
22 | 22 | <Virtualize @ref="@_virtualizeComponent" |
23 | | - TItem="(int RowIndex, TGridItem Data)" |
24 | | - ItemSize="@ItemSize" |
25 | | - OverscanCount="@OverscanCount" |
26 | | - ItemsProvider="@ProvideVirtualizedItems" |
27 | | - ItemContent="@(item => builder => RenderRow(builder, item.RowIndex, item.Data))" |
28 | | - Placeholder="@(placeholderContext => builder => RenderPlaceholderRow(builder, placeholderContext))" /> |
| 23 | + TItem="(int RowIndex, TGridItem Data)" |
| 24 | + ItemSize="@ItemSize" |
| 25 | + OverscanCount="@OverscanCount" |
| 26 | + ItemsProvider="@ProvideVirtualizedItems" |
| 27 | + ItemContent="@(item => builder => RenderRow(builder, item.RowIndex, item.Data))" |
| 28 | + EmptyContent="@EmptyContent" |
| 29 | + Placeholder="@(placeholderContext => builder => RenderPlaceholderRow(builder, placeholderContext))" /> |
29 | 30 | } |
30 | 31 | else |
31 | 32 | { |
|
41 | 42 | { |
42 | 43 | var initialRowIndex = 2; // aria-rowindex is 1-based, plus the first row is the header |
43 | 44 | var rowIndex = initialRowIndex; |
44 | | - foreach (var item in _currentNonVirtualizedViewItems) |
| 45 | + |
| 46 | + if (EmptyContent != null && _currentNonVirtualizedViewItems.Count == 0) |
45 | 47 | { |
46 | | - RenderRow(__builder, rowIndex++, item); |
| 48 | + RenderEmptyRow(__builder, rowIndex++); |
| 49 | + } |
| 50 | + else |
| 51 | + { |
| 52 | + foreach (var item in _currentNonVirtualizedViewItems) |
| 53 | + { |
| 54 | + RenderRow(__builder, rowIndex++, item); |
| 55 | + } |
47 | 56 | } |
48 | 57 |
|
49 | 58 | // When pagination is enabled, by default ensure we render the exact number of expected rows per page, |
|
63 | 72 | } |
64 | 73 | } |
65 | 74 |
|
| 75 | + private void RenderEmptyRow(RenderTreeBuilder __builder, int rowIndex) |
| 76 | + { |
| 77 | + <tr aria-rowindex="@rowIndex"> |
| 78 | + <td colspan="@_columns.Count"> |
| 79 | + @EmptyContent |
| 80 | + </td> |
| 81 | + </tr> |
| 82 | + } |
| 83 | + |
66 | 84 | private void RenderRow(RenderTreeBuilder __builder, int rowIndex, TGridItem item) |
67 | 85 | { |
68 | 86 | var rowClass = RowClass?.Invoke(item); |
69 | 87 | <tr @key="@(ItemKey(item))" aria-rowindex="@rowIndex" class="@rowClass"> |
70 | 88 | @foreach (var col in _columns) |
71 | 89 | { |
72 | 90 | <td class="@ColumnClass(col)" @key="@col">@{ col.CellContent(__builder, item); }</td> |
73 | | - } |
74 | | - </tr> |
75 | | - } |
| 91 | + } |
| 92 | + </tr> |
| 93 | +} |
76 | 94 |
|
77 | | - private void RenderPlaceholderRow(RenderTreeBuilder __builder, PlaceholderContext placeholderContext) |
78 | | - { |
79 | | - <tr aria-rowindex="@(placeholderContext.Index + 1)"> |
80 | | - @foreach (var col in _columns) |
81 | | - { |
82 | | - <td class="grid-cell-placeholder @ColumnClass(col)" @key="@col">@{ col.RenderPlaceholderContent(__builder, placeholderContext); }</td> |
83 | | - } |
84 | | - </tr> |
| 95 | +private void RenderPlaceholderRow(RenderTreeBuilder __builder, PlaceholderContext placeholderContext) |
| 96 | +{ |
| 97 | + <tr aria-rowindex="@(placeholderContext.Index + 1)"> |
| 98 | + @foreach (var col in _columns) |
| 99 | + { |
| 100 | + <td class="grid-cell-placeholder @ColumnClass(col)" @key="@col">@{ col.RenderPlaceholderContent(__builder, placeholderContext); }</td> |
| 101 | + } |
| 102 | +</tr> |
85 | 103 | } |
86 | 104 |
|
87 | 105 | private void RenderColumnHeaders(RenderTreeBuilder __builder) |
| 106 | +{ |
| 107 | + foreach (var col in _columns) |
88 | 108 | { |
89 | | - foreach (var col in _columns) |
90 | | - { |
91 | | - <th class="@ColumnHeaderClass(col)" aria-sort="@AriaSortValue(col)" @key="@col" scope="col"> |
92 | | - <div class="col-header-content">@col.HeaderContent</div> |
| 109 | + <th class="@ColumnHeaderClass(col)" aria-sort="@AriaSortValue(col)" @key="@col" scope="col"> |
| 110 | + <div class="col-header-content">@col.HeaderContent</div> |
93 | 111 |
|
94 | | - @if (col == _displayOptionsForColumn) |
95 | | - { |
96 | | - <div class="col-options">@col.ColumnOptions</div> |
97 | | - } |
98 | | - </th> |
99 | | - } |
| 112 | + @if (col == _displayOptionsForColumn) |
| 113 | + { |
| 114 | + <div class="col-options">@col.ColumnOptions</div> |
| 115 | + } |
| 116 | + </th> |
100 | 117 | } |
101 | 118 | } |
| 119 | +} |
0 commit comments