微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Telerik网格过滤器选项可用于使用Blazor进行下拉

如何解决Telerik网格过滤器选项可用于使用Blazor进行下拉

您好,我正在开发blazor服务器端应用程序,已将数据显示到GRID中。 并且在需要的地方提供了针对列的过滤器。 我们可以显示/隐藏具有Filterable =“ true / false”值的过滤器选项。

我所关心的完全不同。我有名为发票客户 ClientGroup

的表

此处 Client ClientGroup 表包含ID /值字段,例如下拉数据。 并且发票表具有 ClientId ClientGroupId 的引用,其中具有外键引用

我正在将发票表数据显示带有空白的Telerik网格中

下面是我的示例代码,用于将 ClientGroup 数据显示到Grid中,但是由于模型具有int属性,因此筛选器选项不起作用。

<GridColumn Field="@(nameof(InvoiceModel.ClientGroupId))" Title="ClientGroup" Width="300px" Filterable="true">

            <Template>
                @{
                    var data = context as InvoiceModel;
                    var clientGroup = StaticData.GetClientGroupName(data.AffilatedGroup);

                    if (data.IsdisplayClientGroupDropdown)
                    {
                        <select class="form-control small-input-financial-view drp-finanz w-100"
                                id="Medienart">
                            @foreach (var item in ClientList)
                            {
                                if (item.ClienGrouptName == clientGroup)
                                {
                                    <option selected value="@item.ClientGroupId">
                                        @item.ClienGrouptName
                                    </option>
                                }
                                else
                                {
                                    <option value="@item.ClientGroupId">
                                        @item.ClienGrouptName
                                    </option>
                                }
                            }
                        </select>
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(clientGroup))
                        {
                            <a href="javascript:;"
                               title="No clientGroup data found"
                               class="maximum-cher-div">
                                No clientGroup data found
                            </a>
                        }
                        else
                        {
                            <a href="javascript:;"
                               title="@clientGroup"
                               class="maximum-cher-div">
                                @clientGroup
                            </a>
                        }

                    }

                }
            </Template>
        </GridColumn>

我对下拉列表值过滤器进行了一些研究,但没有得到任何合适的解决方案。 任何类型的帮助将不胜感激。

解决方法

如果ClientGroup表在运行时未更改,最简单的方法是为ClientGroups创建等效的枚举:

public enum ClientGroupEnum
{
   Group1 = 1,Group2 = 2,...
}

然后,您可以在InvoiceModel中使用ClientGroupEnum属性而不是ClientGroupId属性。

然后在网格中可以添加以下列:

<GridColumn Field="@(nameof(InvoiceModel.ClientGroupEnum))" Title="ClientGroup" Width="300px" Filterable="true"/>

那么您根本不需要模板。在该列中,您将看到枚举值的文本表示形式(例如Group1),在过滤器中,您将能够从包含您的枚举的所有文本表示形式的下拉列表中选择一个值。

如果您不能(或不想)更改InvoiceModel的属性,则仍可以通过使用以下GridColumn来使用ClientGroupEnum:

<GridColumn Field="@(nameof(InvoiceModel.ClientGroupId))" FieldType="@(typeof(ClientGroupEnum))" Title="ClientGroup" Width="300px" Filterable="true"/>

使用FieldType参数告诉网格将int值视为Enum值。

如果ClientGroup表在运行时发生更改,则可以在InvoiceModel中使用ClientGroupName属性而不是ClientGroupId属性。这意味着您不能使用与代表发票数据库表的发票类相同的方法,而是必须使用InvoiceViewModel类,并在运行时用适当的数据填充它。 对于具有ClientGroupName属性的InvoiceViewModel类,可以使用以下列:

<GridColumn Field="@(nameof(InvoiceViewModel.ClientGroupName))" Title="ClientGroup" Width="300px" Filterable="true"/>

然后您可以使用内置过滤器,例如“ contains”或“ startsWith”,但不会出现带有有效值的下拉列表。

如果您不想创建单独的ViewModel类,或者确实需要下拉菜单,则必须使用here中所述的过滤器模板。在“过滤器模板”中,您可以放置​​一个下拉列表,其中填充了ClientGroup表的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。