2014-07-15 47 views
0

我有网格单元格中的自动完成自定义编辑器控件绑定对象的问题。在列Kendo UI网格编辑自定义控件 - 自动完成返回简单对象,而不是复杂类型

定义:Products.cshtml视图

   columns.Bound(p => p.Product) 
       .EditorTemplateName("Products") 
       //.ClientTemplate("#= Product.Name != undefined ? Product.Name : '' #") 
       .Width(160); 

定义控制:

@(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)) 

如果让我选择从现有的控制autocomple对象随后是好的,但如果我写自由文本 然后控制只返回简单文本到“保存”事件。下面调试屏幕:

1)选择现有的元素: Debugging save event - complex type ok

2)之后,我写了自由文本。在保存活动中,我们有简单的文字。

3)后,我从列表中选择另一个现有产品,也得到简单的文字: Existing problem

自动完成控件将返回后,只有简单的文字。

回答

0

您需要将ISPrimitive设置为true才能获得选择中的文本(DataTextField)值。如果您希望获取自动完成选择的整个对象,则需要将IsPrimitive设置为false。

要获得唯一的自动完成选择的文本部分设置为false

.IsPrimitive(false) 

为了让自动完成选择集真正的整个对象

.IsPrimitive(true) 

查看更多解释示例。

AutoComplete IsPrimitive Example

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)) 
相关问题