Kendo ui 剑道UI网格编辑自定义控件-自动完成返回普通对象而不是复杂类型

Kendo ui 剑道UI网格编辑自定义控件-自动完成返回普通对象而不是复杂类型,kendo-ui,kendo-ui-mvc,Kendo Ui,Kendo Ui Mvc,我在网格单元中的“自动完成自定义编辑器”控件中绑定对象时遇到问题 列的定义: columns.Bound(p => p.Product) .EditorTemplateName("Products") //.ClientTemplate("#= Product.Name != undefined ? Product.Name : '' #") .Width(160); Prod

我在网格单元中的“自动完成自定义编辑器”控件中绑定对象时遇到问题

列的定义:

              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

使自动完成选择集的整个对象为真

更多解释请参见示例


我查看了这个提示,但没有效果。我需要整个对象,因为我必须使用“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))
 .IsPrimitive(true) 
@(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))