2014-07-15 84 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)) 
相關問題