我遇到网格单元格中自动完成自定义编辑器控件的绑定对象问题。
列的定义:
columns.Bound(p => p.Product)
.EditorTemplateName("Products")
//.ClientTemplate("#= Product.Name != undefined ? Product.Name : '' #")
.Width(160);
Products.cshtml视图中的定义控件:
@(Html.Kendo().AutoCompleteFor(m => m)
.DataTextField("Name")
.DataSource(ds =>
ds.ServerFiltering(true).Read(read => read.Action("GetProducts", "Product")))
.Placeholder(View.BaseDocumentItemDetails_Placeholder)
.IgnoreCase(true)
.MinLength(2)
.Suggest(true)
.Events(ev =>
{
// ev.Select("SelectProductName");
// ev.Change("ChangeProductName");
})
.Filter(FilterType.Contains))
如果我从自动填充控件中选择现有对象,那么可以,但是如果我写自由文本 然后控制只返回简单文本到“保存”事件。调试屏幕下方:
1)选择现有元素: Debugging save event - complex type ok
2)之后我写了自由文本。在保存事件中,我们有简单的文本。
3)稍后我从列表中选择另一个现有产品并获得简单文本: Existing problem
自动完成控件将在此之后仅返回简单文本。
答案 0 :(得分:0)
您需要将ISPrimitive设置为true才能获得选择中的text(DataTextField)值。如果您希望获得自动填充选择的整个对象,则需要将IsPrimitive设置为false。
获取自动完成选择设置为假的唯一文本部分
.IsPrimitive(false)
获取自动完成选择设置为True的整个对象
.IsPrimitive(true)
有关详细说明,请参阅示例。
答案 1 :(得分:0)
我检查了这个提示但没有用。我需要整个对象,因为我必须使用“Id”和“Name”产品项目。下面使用网格单元格自定义编辑自动完成控件的定义:
@(Html.Kendo().AutoCompleteFor(m => m)
.DataTextField("Name")
.DataSource(ds =>
ds.ServerFiltering(true).Read(read => read.Action("GetProducts", "Product")))
.Placeholder(View.BaseDocumentItemDetails_Placeholder)
.IgnoreCase(true)
.ValuePrimitive(false)
.MinLength(2)
.Suggest(true)
.Events(ev =>
{
// ev.Select("SelectProductName");
//ev.Change("ChangeProductName");
})
.Filter(FilterType.Contains))