我在联系人网格中有一个用于姓名的自动完成字段。
用户应该能够键入姓名,从列表中选择一个,并自动填充其他联系人详细信息。这工作正常。
但是,用户还应该能够手动输入不在列表中的人的详细信息并保存它们。这不会发生。名称字段失去焦点后,该值仍然存在。保存后,该值消失,因为它没有正确绑定到列。
我已遵循此答案中的建议(选项 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; }