1

抱歉,如果这是 Blazorise 而不仅仅是一般的 Blazor WebAseembly 问题,作为两者的菜鸟,我只是不确定是否使用两个标签发布,但我想在具有某些列的 DataGrid 中显示项目列表可排序(同时多个,而不是一次仅一个),并且一旦发生可排序列 desc/asc/none 方向设置,我希望能够通过单击按钮读取它们设置的方向属性状态以将其传递给另一个组件......只有我不能用这样的@ref 来做到这一点:

<DataGrid TItem="Item"
          Data="@ItemList"
          @ref="dataGrid"
          @bind-SelectedRow="@selectedItem"
          Responsive ShowPager="true" PageSize="10">
        <DataGridCommandColumn TItem="Item" />
        <DataGridColumn TItem="Item" Field="@nameof(Item.Id)" Caption="#" Sortable="false" />
        <DataGridColumn TItem="Item" Field="@nameof(Item.SKU)" Caption="SKU" Sortable="false"/>
        <DataGridColumn TItem="Item" Field="@nameof(Item.ModelId)" Caption="Model" Sortable="false" />
        <DataGridColumn TItem="Item" Field="@nameof(Item.Year)" Caption="Year" Editable="true" Direction="SortDirection.Ascending" />
        <DataGridColumn TItem="Item" Field="@nameof(Item.Weight)" Caption="Weight" Editable="true" Direction="SortDirection.Ascending" />
</DataGrid>

@code {
    private Blazorise.DataGrid.DataGrid<Ad> dataGrid;
    protected void OnClick(MouseEventArgs mouseEventArgs)
    {
        int i = 0;
        string sortdirections="";
        dataGrid.DataGridColumns.
        foreach(Blazorise.DataGrid.DataGridColumn<Ad> col in dataGrid.DataGridColumns)
        {
            if (col.Sortable)
            {
                i++;
                switch(col.SortDirection){
                  case SortDirection.Ascending: smartsort += ("a" + i.ToString()); break;
                  case SortDirection.Descending: smartsort += ("d" + i.ToString()); break;
                  case SortDirection.None: break;
                }
            }
        }
        . . .
    }

因为我得到一个构建错误

CS1579 foreach 语句无法对“RenderFragment”类型的变量进行操作,因为“RenderFragment”不包含“GetEnumerator”的公共实例或扩展定义

鉴于 dataGrid.DataGridColumns 似乎没有引用我正在使用的 dataGrid 组件的实际渲染实例(而是一个 RenderFragment ),因为我可能应该将变量数据绑定到我猜的那些 Direction 属性......但我的麻烦某些或特定变量的数据绑定方向属性是我希望将来使 DataGrid 更具动态性,在这种情况下,我什至不会在设计时提前知道什么和哪些列可排序并且用户可以设置一些可排序的列来排序方向无...因此我需要一些(请原谅双关语)方向,请教如何以这种方式进行操作(基本上就像使用旧的 ASP.NET 服务器端组件以在 blazor webassembly 应用程序中访问其运行时状态)或如何动态地使用单个数据绑定变量来完成它,但这样显示的列中只有几列实际上是可排序的单击数据网格列名称,用户可以使用该名称更改排序顺序方向(以便在用户完成单击列的排序顺序后,数据绑定变量保存该数据网格的状态,指示哪些可排序列已设置为上升和下降中的哪一个,如果有的话,因为他们也可以选择方向无)?因为他们也可以选择方向无)?因为他们也可以选择方向无)?

TIA

4

1 回答 1

0

最新版本的 Blazorise 具有排序模式:

<DataGrid ... Sortable="true" SortMode="DataGridSortMode.Multiple" ...

https://blazorise.com/docs/helpers/enums/datagrid

如果这不是您正在寻找的内容,请在 gitter 上询问 Mladen或在此处查看源代码。

于 2022-01-22T16:38:02.987 回答