1

目标是能够将过滤后的数据集传递给我也可以键入和查找的列表视图。在我转换为 type-and-find(也称为 select2)之前,我的代码工作正常。这是没有预过滤的代码。

@(Html.Kendo().DropDownList()
        .Name(ViewData.TemplateInfo.HtmlFieldPrefix)
        .DataTextField(TextField)
        .DataValueField(ValueField)
        .MinLength(3)
         .ValuePrimitive(true)
        .AutoBind(false)
        .Filter(FilterType.Contains)
        .DataSource(source =>
           {
               source.Read(read => { read.Action("Get" + SrcTable + "s", "Support", readParams); });
           })
        .Virtual(v => v.ItemHeight(26))
        .OptionLabel(OptionLabelText)
        .Value(Model.ToString())
        .HtmlAttributes(HtmlAttributes))

这是预过滤的工作代码。

 @(Html.Kendo().DropDownList()
   .Name(ViewData.TemplateInfo.HtmlFieldPrefix)
   .DataTextField(TextField)
   .DataValueField(ValueField)
   .ValuePrimitive(true)
   .AutoBind(false)
   .DataSource(source =>
   {
       source.Read(read => { read.Action("Get" + SrcTable + "s", "Support", readParams)
            .Data("filter" + ViewData.TemplateInfo.HtmlFieldPrefix);
       })
       .ServerFiltering(true);
   })
   .OptionLabel(OptionLabelText)
   .Value(Model.ToString())
   .CascadeFrom(cascade)
   .HtmlAttributes(HtmlAttributes)
)

.Data 字段是一个 hack javascript,它获取控件中内容的当前值。它被传递到控制器中,因为我们在数据库中“停用”了项目,如果它在现有记录中,我们希望显示当前项目,但过滤掉其余项目。

现在的问题是:我不能将它们结合在一起。当我尝试时,它会破坏打字搜索。谁能告诉我为什么?

4

1 回答 1

0

看起来问题在于您无法在服务器端过滤要键入并查找过滤器的数据集。我不知道为什么这会是一个问题,但确实如此。将 .serverfiltering 设置为 false 解决了这个问题。

于 2018-11-06T14:12:08.137 回答