目标是能够将过滤后的数据集传递给我也可以键入和查找的列表视图。在我转换为 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,它获取控件中内容的当前值。它被传递到控制器中,因为我们在数据库中“停用”了项目,如果它在现有记录中,我们希望显示当前项目,但过滤掉其余项目。
现在的问题是:我不能将它们结合在一起。当我尝试时,它会破坏打字搜索。谁能告诉我为什么?