colModelのステータスフィールドの値を動的に変更する方法はありますか?次のようなフィールドを持つcolモデルがあるとします。
... field ... name: "state",type: "select",
editoptions: {value: "0:state0;1:state1;2:state2;3:state3;4:state4"}
したがって、この値を使用して州の選択フィールドを取得します。しかし、どの選択フィールドが可能であるかを動的に決定する必要があります。現在の行の状態がstate0の場合、state0とstate1のみが表示されます。状態がstate1の場合、表示はstate0、state1、state2のようになり、状態4まではstae3とstate4のみが表示されます。
フォーマッターでこれを解決することはできますか、それともそのようなことを行う他の方法はありますか?
さらに難しくするために、一般的に表示される状態は、私のアプリケーションでログインしているユーザーに依存しているとしましょう。ある意味で、ユーザーはstate0、state2、state4しか見ることができません。これはさらに複雑になる可能性があり、state3とstate4の間の遷移が現在のユーザーに許可されないためです。
それにもかかわらず、状態自体も動的にあります。アプリケーションでオブジェクトのJavaScriptを動的に生成すると便利ですか?これは一般的な状態クラスを表し、このオブジェクトを使用してフォーマッターで必要な出力を生成しますか?したがって、このオブジェクト内のロジック、出力の生成方法、さらにユーザーが表示できる状態のみを取得する方法をカプセル化できます。
1つの石で2羽の鳥を殺すように私を連れて行くべきです。
読み直した後、私が何をしたいのかが明確になっていることを願っています。そうでない場合は、教えてください。詳細を説明します。
具体的な問題の解決策、thx to oleg:
editoptions : {
value : function(){
//a function can be called here:
currentRow=$("#order_items").getGridParam('selrow');
currentState=$("#order_items").getCell(currentRow,"state");
nastyGeneratedThings=function(){
... do some nasty things with currentState
... and generate what you want
}
return nastyGeneratedThings
}
関数が一度だけ呼び出されたため、問題が発生しました。したがって、NavgridでrecreateFormオプションを設定する必要があります。
navGrid("#pager", {
edit : true,
add : true,
del : true
}, {
height : 500,
width : 500,
// recreate the form every time when edit button is clicked.
// Default is false.
recreateForm : true
}
});
その後、[編集]をクリックするたびに関数が起動します。これが誰かに何らかの形で役立つことを願っています。