Kendo UI DropDownList 在没有交互的情况下选择第一个项目
KendoUI DropDownList Selects First Item without Interaction
我有一个 KendoUI DropDownList,它允许用户在服务器中搜索结果并 select 从列表中搜索结果。在进行搜索之前,它是一个空列表。
当前进行搜索后,搜索的第一个结果是 selected,即使用户从未进行过 selection。我希望它不进行任何更改,除非用户实际进行 selection.
这个例子可以正常工作,但我无法让它在我自己的代码中正常工作。 - http://dojo.telerik.com/EjUvu/3
var control = $(matterControl).kendoDropDownList({
dataTextField: "DisplayName",
dataValueField: "ID",
minLength: 1,
filter: "contains",
value:'',
optionLabel: { DisplayName: 'Please enter 1 or more characters', ID: '' },
filtering: function (e) {
var filter = e.filter;
if (filter && !filter.value) { //prevent filtering if the filter does not value
e.sender.dataSource.data([]);
e.sender.text('');
e.sender.value('');
e.preventDefault();
}
},
autoBind: false,
valuePrimitive: true,
template:
'<div class="searchResult">'+
'<span class="searchTitle searchIcon" data-id="#:ID #" >#:DisplayName #</span>' +
'<span class="searchDescription">#:Description #</span></div>',
dataSource: new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url: (options) => {
var searchValue = options.filter
&& options.filter.filters
&& options.filter.filters[0]
&& options.filter.filters[0].value;
var currentId = $(settings.entryIDField).val();
var currentText = $(settings.entryNameField).val();
if (currentId != null
&& currentId !== undefined
&& currentId !== emptyGuid
&& !searchValue)
return defaultRoutes.SearchService.Search + "?searchText=" + currentText + "&recordId=" + currentId;
else
return defaultRoutes.SearchService.Search + "?searchText=" + searchValue;
},
}
},
}),
select: function (e: any) {
var dataItem = this.dataItem(e.item);
$(settings.entryNameField).val(dataItem.DisplayName);
$(settings.entryIDField).val(dataItem.ID);
}
});
您描述的行为是一个限制,似乎已经解决了:
https://github.com/telerik/kendo-ui-core/issues/1475
即将发布的 2016 R3(9 月某个时候)将包含该修复程序。
我不知道当前版本的解决方法可以防止这种情况发生。
我有一个 KendoUI DropDownList,它允许用户在服务器中搜索结果并 select 从列表中搜索结果。在进行搜索之前,它是一个空列表。
当前进行搜索后,搜索的第一个结果是 selected,即使用户从未进行过 selection。我希望它不进行任何更改,除非用户实际进行 selection.
这个例子可以正常工作,但我无法让它在我自己的代码中正常工作。 - http://dojo.telerik.com/EjUvu/3
var control = $(matterControl).kendoDropDownList({
dataTextField: "DisplayName",
dataValueField: "ID",
minLength: 1,
filter: "contains",
value:'',
optionLabel: { DisplayName: 'Please enter 1 or more characters', ID: '' },
filtering: function (e) {
var filter = e.filter;
if (filter && !filter.value) { //prevent filtering if the filter does not value
e.sender.dataSource.data([]);
e.sender.text('');
e.sender.value('');
e.preventDefault();
}
},
autoBind: false,
valuePrimitive: true,
template:
'<div class="searchResult">'+
'<span class="searchTitle searchIcon" data-id="#:ID #" >#:DisplayName #</span>' +
'<span class="searchDescription">#:Description #</span></div>',
dataSource: new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url: (options) => {
var searchValue = options.filter
&& options.filter.filters
&& options.filter.filters[0]
&& options.filter.filters[0].value;
var currentId = $(settings.entryIDField).val();
var currentText = $(settings.entryNameField).val();
if (currentId != null
&& currentId !== undefined
&& currentId !== emptyGuid
&& !searchValue)
return defaultRoutes.SearchService.Search + "?searchText=" + currentText + "&recordId=" + currentId;
else
return defaultRoutes.SearchService.Search + "?searchText=" + searchValue;
},
}
},
}),
select: function (e: any) {
var dataItem = this.dataItem(e.item);
$(settings.entryNameField).val(dataItem.DisplayName);
$(settings.entryIDField).val(dataItem.ID);
}
});
您描述的行为是一个限制,似乎已经解决了:
https://github.com/telerik/kendo-ui-core/issues/1475
即将发布的 2016 R3(9 月某个时候)将包含该修复程序。
我不知道当前版本的解决方法可以防止这种情况发生。