0

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

列上的定义:

              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)稍后我从列表中选择另一个现有产品并得到简单的文本: 现有问题

之后,自动完成控件将仅返回简单文本。

4

2 回答 2

0

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

获取自动完成选择集的唯一文本部分 False

   .IsPrimitive(false) 

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

 .IsPrimitive(true) 

有关更多说明,请参见示例。

自动完成 IsPrimitive 示例

于 2014-07-15T11:16:44.467 回答
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))
于 2014-07-15T20:25:54.150 回答