我在页面上有数据源、自动完成组件和ListView。两者都使用数据源。 ListView 显示来自 DataSource 的数据,并在 ListView 中自动完成过滤数据。
当我输入AutoComplete组件时,它会自动过滤数据源,ListView的内容会因为过滤而改变。
但是当 AutoComplete 显示带有过滤结果的下拉菜单并且我选择了一些值时,它没有触发过滤事件并且 ListView 的内容不会改变
<div class="col-md-12 d-flex justify-content-center align-items-center">
@(Html.Kendo().DataSource<ProjectQueue>()
.Name("projectDataSource")
.Ajax(dataSource => dataSource
.Read(read => read.Action("ProjectDataSource_Read", "Home"))
.ServerOperation(false)
)
)
@(Html.Kendo().AutoComplete()
.Name("autoComplete")
.DataTextField("Name")
.Filter(FilterType.Contains)
.MinLength(2)
.DataSource("projectDataSource")
)
</div>
<div class="col-md-12 d-flex justify-content-center align-items-center">
@(Html.Kendo().ListView<ProjectQueue>()
.Name("projectsListView")
.ClientTemplateId("template")
.TagName("div")
.HtmlAttributes(new { style = "width:100%;" })
.Scrollable()
.DataSource("projectDataSource")
.Selectable(selectable => selectable.Mode(ListViewSelectionMode.Single))
.Events(events => events.Change("onChangeProject"))
)
</div>
如何在 AutoComplete 中的 select 事件后触发 DataSource 中的过滤,然后在 ListView 中触发过滤?
或者我可以禁用 Aoutocomplete 组件中的下拉列表并仅在其中输入吗?
当您输入自动完成功能时,确实会触发
filtering
事件。但是,当您在带有选项的弹出容器中选择一个项目时,当小部件的值发生更改时, select
会触发事件,然后是 change
事件。
例如,您可以向 AutoComplete 添加选择事件处理程序,并调用 dataSource
filter
方法来根据所选项目进行过滤。
.Events(ev=>ev.Select("onSelect"))
function onSelect(e){
projectDataSource.filter({field:"Name", operator: "eq", value: e.dataItem.Name})
}