簡體   English   中英

Kendo UI網格編輯自定義控件-自動完成功能返回普通對象而不是復雜類型

[英]Kendo UI grid edit custom control - autocomplete return plain object instead complex type

我從網格單元格中的自動完成自定義編輯器控件綁定對象時遇到問題。

列上的定義:

              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)選擇現有元素: 調試保存事件-復雜類型確定

2)之后,我寫了自由文本。 在保存事件中,我們有簡單的文本。

3)之后,我從列表中選擇了另一個現有產品,並得到了簡單的文字: 存在的問題

此后,自動完成控件將僅返回簡單文本。

您需要將ISPrimitive設置為true才能在選擇中僅獲取文本(DataTextField)值。 如果希望獲得“自動完成”選擇的整個對象,則需要將IsPrimitive設置為false。

若要獲取“自動完成選擇集”的唯一文本部分,則為False

   .IsPrimitive(false) 

要獲得“自動完成選擇集”的整個對象,請設置為True

 .IsPrimitive(true) 

有關更多說明,請參見示例。

自動完成IsPrimitive示例

我檢查了這個技巧,但是沒有用。 我需要整個對象,因為我必須使用“ 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM