在我的Asp.net MVC项目中,我有一个Kendo组合框,它附在模型中的客户列表中。我想要插入新客户的能力(如果他们不在列表中)。我将组合框设置为:
@(Html.Kendo().ComboBox()
.Name("CustomerName")
.Filter("startswith")
.Placeholder("Select a customer...")
.BindTo(@Model.CustomerSelectList)
.Events(e => { e.Select("onSelect"); })
.DataTextField("Text")
.DataValueField("Value")
.Suggest(true)
.HtmlAttributes(new { style = "width:250px;" }))
我还提供了onSelect()来进行ajax调用以引入和填充现有客户的地址。
function onSelect(e) {
// get the dataItem corresponding to the selectedIndex to get the text and value
var dataItem = this.dataItem(e.item.index());
var value = dataItem.Value;
var text = dataItem.Text;
//Retreive list for new selection
var url = '@Url.Content("~/Request/GetCustomerAddress")' + '?CustID=' + value;
$.ajax({ url: url, success: CustomerDataRetrieved, cache: false, error: AjaxError, type: 'GET', dataType: 'json' });
}
function CustomerDataRetrieved(data) {
$("#Address1").val(data.Address1);
$("#Address2").val(data.Address2);
$("#Address3").val(data.Address3);
$("#City").val(data.City);
$("#State").val(data.State);
$("#PostalCode").val(data.PostalCode);
$("#Country").val(data.Country);
}
当我从现有客户列表中选择一个项目时,它运行良好并填写客户的地址。但是,当我在组合框中键入新的客户名称时,它会自动清除组合框。如何让Kendo组合框保留新值?
更新1: 正如您在下图中看到的那样,当我从列表中键入一个值时,值进入组合框并按下回车键后,它将我带到填入数据的下一个字段(Address1),并且组合框值保持不变。但是,如果我输入一个新值并按下回车键,我会转到下一个字段(地址1),但组合框值会消失。
答案 0 :(得分:0)
也许你可以尝试这样的事情:
function onSelect(e) {
// get the dataItem corresponding to the selectedIndex to get the text and value
var dataItem = this.dataItem(e.item.index());
// get the text value of the combobox
var customerName = $('#CustomerName').data("kendoComboBox").text();
if(dataItem ==! null && dataItem ==! undefined){
var value = dataItem.Value;
var text = dataItem.Text;
//Retreive list for new selection
var url = '@Url.Content("~/Request/GetCustomerAddress")' + '?CustID=' + value;
$.ajax({ url: url, success: CustomerDataRetrieved, cache: false, error: AjaxError, type: 'GET', dataType: 'json' });
}
// replace the text
$('#CustomerName').data("kendoComboBox").value(customerName);
}
它可能只使用if包装ajax调用,但如果不尝试获取并替换值。我的想法是,如果你输入的东西不应该在数据源中,并且ajax查找失败。