2016-10-01 63 views
0

我在kendo網格中使用kendo MultiSelect作爲自定義編輯器, 當按下編輯行按鈕(MultiSelect爲空)時保存更改但沒有顯示文本值時MultiSelect正常工作。Kendo MultiSelect在網格中沒有顯示默認值

我的自定義編輯器的功能是:

function GRID_MULTISELECT_CUSTOM_EDITOR(container, options) { 
    var columnValue = String(options.model.POST_HISTORY).replace(/,/g,'","'); 

    $('<input name="GRID_POST_LVL_MULTISELECT" id="GRID_POST_LVL_MULTISELECT" data-value-primitive="true" data-bind="value:' + options.field + '"/>') 
     .appendTo(container) 
     .kendoMultiSelect({ 
      filter: "contains", 
      optionLabel: " ", 
      width: "100px", 
      dataTextField: "NAME_UNIT", 
      dataValueField: "CD_UNIT", 
      dataSource: prsListDataSource, 
      value: [columnValue], 
      change: function(e) { 
       selectedValue = e.sender.value(); 
       apex.event.trigger($("#PRS_LIST_REG_POST_HISTORY_MULTISELECT"),"kapex-multiselect-change"); 
       apex.event.trigger($("#PRS_LIST_REG_POST_HISTORY_MULTISELECT"),"kapex-multiselect-databound"); 
      } 
    }); 

    var ms = $("#GRID_MULTISELECT_CUSTOM_EDITOR").data("kendoMultiSelect"); 
    console.log(ms.value()); 
} 

console.log(ms.value());顯示值設置,但在textvalue多選小部件沒有任何顯示。

將1值存儲在數據庫MultiSelect中時正確工作,並在編輯中顯示文本值。但是當多值時,textvalue不顯示。

我將此格式的datavalue作爲varchar存儲在數據庫列中。

001,100,110,111,112

回答

1

我建議你序列化POST_HISTORY值作爲數組到客戶端。這將免去在自定義編輯器功能中即時修改模型值的需要。在用戶完成編輯行後,您也不需要考慮如何將MultiSelect的數組值更改回逗號分隔的字符串值。

http://dojo.telerik.com/IDUBI

請記住,在多選聲明中使用的value配置將在這種情況下無法正常工作,因爲在後一階段適用,並優先在MVVM值綁定。

在另一方面,如果你絕對需要的POST_HISTORY值逗號分隔的字符串序列化到客戶端,然後使用dataSource.schema.parse改造這些字符串網格之前陣列是數據綁定:

http://dojo.telerik.com/OQAGa

最後,從<select multiple>創建MultiSelect小部件,而不是<input>

+1

非常感謝你,這很有用。 – SYSMAN

+0

好,請考慮標記我的答案作爲答案或upvoting它。 – dimodi