我在联系人网格中有名称的自动填充字段。
用户应该能够键入名称,从列表中选择一个名称,并自动填充其他联系人详细信息。这工作正常。
但是,用户还应该能够手动输入不在列表中的人员的详细信息并将其保存。这不会发生。名称字段失去焦点后,值仍然存在。保存后,该值将消失,因为它未正确绑定到列。
我已经在this回答中遵循了建议(选项1,因为我而不是使用ViewData),但我无法正确绑定值。
如果我将自动填充小部件命名为与列字段相同,则自动完成功能不起作用,该字段只是一个普通的文本字段。如果我将自动完成窗口小部件命名为其他内容,则输入字段将成为具有窗口小部件名称的自动完成字段,但不会将数据绑定到列。
列声明
.Columns(columns =>
{
columns.Bound(e => e.Name).EditorTemplateName("NameLookupConcatenated");
columns.Bound(e => e.Phone);
columns.Bound(e => e.Email);
columns.Command(command => { command.Edit(); command.Destroy(); });
})
网格模型
public int ID { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
自动填充
@model string
@(Html.Kendo().AutoComplete()
.Name("concatenated")
.DataTextField("Concatenated")
.Filter("contains")
.DataSource(source => source.Read(read => read.Action("GetUserInfo", "Contacts")
.Data("onAdditionalData"))
.ServerFiltering(true))
.Events(e => e.Select("onUserSelect"))
)
自动填充模型
public string Email { get; set; }
private string FirstName { get; set; }
private string LastName { get; set; }
public string Concatenated
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
public string TelePhoneNo { get; set; }
答案 0 :(得分:0)
我发现页面上已经有一个输入元素,ID为#34; Name"。当网格处于编辑模式并且自动完成没有附加到正确的元素时,这会导致id的重复。
我的工作代码:
.Columns(columns =>
{
columns.Bound(e => e.ConcatName).EditorTemplateName("NameLookupConcatenated"); //changed name here
columns.Bound(e => e.Phone);
columns.Bound(e => e.Email);
columns.Command(command => { command.Edit(); command.Destroy(); });
})
更改了上面列的名称并设置了"名称"自动完成的属性以匹配列名。
@(Html.Kendo().AutoComplete()
.Name("ConcatName")
.DataTextField("Concatenated")
.Filter("contains")
.DataSource(source => source.Read(read => read.Action("GetUserInfo", "Contacts")
.Data("onAdditionalData"))
.ServerFiltering(true))
.Events(e => e.Select("onUserSelect"))
)