Telerik网格过滤器选项下拉与blazor



你好,我正在开发blazor服务器端应用程序,我已经将数据显示到GRID中。我已经为任何需要的列提供了过滤器。我们可以用Filterable="来显示/隐藏过滤器选项;真/假";价值

我的担心完全不同。我有名为发票客户客户端组的表

此处,ClientClientGroup表包含Id/value字段,例如下拉数据。发票表具有ClientIdClient GroupId键引用

我正在使用blazor将发票表数据显示到Telerik Grid

以下是我的示例代码,用于将ClientGroup数据显示到网格中,但由于模型具有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参数,您将告诉Grid int值应被视为Enum值。

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

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

然后,您可以使用诸如";包含";或";startsWith";但是您不会有一个包含有效值的下拉列表。

如果你不想创建一个单独的ViewModel类,或者你真的需要一个下拉列表,你必须使用这里描述的过滤器模板。在筛选模板中,您可以放置一个下拉列表,其中包含ClientGroup表的值。

最新更新