2016-10-01 19 views
0

剣道グリッドのカスタムエディタとして剣道MultiSelectを使用します。 変更を保存するとMultiSelectが正しく動作しますが、編集行ボタンを押すとMultiSelectが正しく動作します(MultiSelectは空です)。剣道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は編集時に表示されます。しかし、多値であれば、textvalueは表示されません。

この形式のdatavalueは、データベース列にvarcharとして格納します。

001,100,110,111,112

答えて

1

私はクライアントに配列としてPOST_HISTORY値をシリアル化することをお勧めいたします。これにより、カスタムエディタ機能でオンザフライでモデル値を変更する必要がなくなります。また、ユーザーが行の編集を終了した後、MultiSelectの配列値をコンマ区切りの文字列値に変換する方法を考える必要はありません。

http://dojo.telerik.com/IDUBI

結合MVVM値は後の段階で適用され、優先されるので、複数選択宣言でvalue構成を使用すると、この場合には動作しないことに注意してください。

http://dojo.telerik.com/OQAGa

一方

、あなたは絶対にクライアントにカンマで区切られた文字列としてPOST_HISTORY値をシリアル化する必要がある場合は、その後、グリッド前をアレイにこれらの文字列を変換するためにdataSource.schema.parseを使用するには、データバインドされています

最後に、ではなく、<select multiple>からMultiSelectウィジェットを作成します。

+1

大変ありがとうございました。 – SYSMAN

+0

良いです、私の返信を回答としてマーキングするか、それを上書きすることを検討してください。 – dimodi

関連する問題