【问题标题】:Modify the default Filter Field in a Telerik MVC ComboBox修改 Telerik MVC ComboBox 中的默认过滤器字段
【发布时间】:2017-09-23 02:45:35
【问题描述】:

过滤 Telerik MVC ComboBox 时,控件默认过滤 DataTextField 中的值。我的 ComboBox 绑定到具有多个字段的数据,我使用这些字段在带有自定义模板的表中显示。我知道没有针对多个字段进行过滤的开箱即用解决方案,但我想知道是否有办法在我组合了多个值的字段上运行过滤器。

这是我的组合框:

@(Html.Kendo().ComboBoxFor(m => m.InputData.PublicationId)
    .DataTextField("ID")
    .DataValueField("ID")
    .BindTo(Model.Publications)
    .Filter(FilterType.Contains)
    .TemplateId("pubListItemTemplate")
    .HeaderTemplateId("pubListHeaderTemplate")
)

我的数据结构如下:

{ ID: "AJ", Description: "American Journal", Combined: "AJ American Journal" }, etc...]

这里的问题是,如果用户输入“AJ”,过滤器会找到上面的示例,但如果他们输入“American”,则不会;因为指定的 DataTextField 正在过滤 ID。

我需要它在名为“Combined”的字段上进行过滤,但我仍然需要使用“ID”作为 DataTextField,以便 ID 只是他们选择项目后在组合中显示的内容。

【问题讨论】:

    标签: telerik-mvc


    【解决方案1】:

    这是在 Telerik 论坛上提供给我的,我已经确认它可以解决我的问题:

    @(Html.Kendo().ComboBoxFor(m => m.InputData.PublicationId)
        .DataTextField("ID")
        .DataValueField("ID")
        .Events(events => events.Filter("onPubFilter"))
        .BindTo(Model.Publications)
        .Filter(FilterType.Contains)
        .TemplateId("pubListItemTemplate")
        .HeaderTemplateId("pubListHeaderTemplate")
    )
    
    <script>
        function onPubFilter(ev) {
    
            var filterValue = ev.filter.value;
            ev.preventDefault();
    
            this.dataSource.filter({
                filters: [
                    {
                        field: "Combined",
                        operator: "contains",
                        value: filterValue
                    }
                ]
            });
    
        }
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-31
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多