在下拉列表中选择后,Kendo 自动完成不会过滤数据源

问题描述 投票:0回答:1

我在页面上有数据源、自动完成组件和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 组件中的下拉列表并仅在其中输入吗?

javascript listview kendo-ui autocomplete kendo-autocomplete
1个回答
0
投票

当您输入自动完成功能时,确实会触发

filtering
事件。但是,当您在带有选项的弹出容器中选择一个项目时,当小部件的值发生更改时,
select
会触发事件,然后是
change
事件。

例如,您可以向 AutoComplete 添加选择事件处理程序,并调用 dataSource

filter
方法来根据所选项目进行过滤。

.Events(ev=>ev.Select("onSelect"))

function onSelect(e){
    projectDataSource.filter({field:"Name", operator: "eq", value: e.dataItem.Name})
}

这是一个例子

© www.soinside.com 2019 - 2024. All rights reserved.