0

新しい行を追加するために追加ダイアログが有効になっているjqgridがあります。私がそれを機能させたいのは、ユーザーがドロップダウンアイテムのリストから選択し、選択されたアイテムによって2番目のドロップダウンに最初のアイテムに基づくデータが入力されるようにすることです。

たとえば、グリッドに国用と州用の2つの列がある場合、ユーザーが追加ボタンをクリックすると、国の入力はドロップダウンになり、ajax呼び出しによって国が動的に入力されます。次に、ユーザーが国を選択すると、選択した国に基づいて州のドロップダウンが表示されます。

現在、私は次のようなことをしています。

            beforeProcessing: function () {
                var allcountries = ajaxcall();
                $('#clientReportsGrid').setColProp('Countries', { editoptions: { value: allcountries, class: 'edit-select' }, editrules: { required: true, edithidden: true} });
            },
            loadComplete: function () {
                $('#Countries').change(function () {
                    // States will be populated here
                    alert("changed");
                });
            }

beforeProcessingの最初の部分は正常に機能し、国のドロップダウンが期待どおりに表示されます。ただし、loadCompleteのイベントは、IDが「Countries」のselect入力に関連付けられず、アラートは発生しません。selectオブジェクトはloadCompleteが起動してまだ作成されていないようですが、その場合、状態が入力されるロジックをどこに配置するかがわかりません。

何か案は?

4

2 に答える 2

1

jqGridは依存選択を直接サポートしていませんが、答えにはシナリオの実装があります。最も問題なのは、コードが小さくないことですが、実際のコードをすばやく分析して、独自のコードを作成することです。

于 2012-06-29T17:24:44.877 に答える
0

私は次のようなことをすることになりました、それは少し冗長ですが、それは機能し、コードがあまり重くありません:

まず、beforeProcessingコールバックで、国と州の両方のドロップダウンに初期値を入力します。

beforeProcessing: function () {
            var allcountries = ajaxCallToFetchCounties();
            $('#clientReportsGrid').setColProp('Countries', { editoptions: { value: allcountries, class: 'edit-select' }, editrules: { required: true, edithidden: true} });
            var states = ajaxCallToFetchStates();
            $('#clientReportsGrid').setColProp('States', { editoptions: { value: states , class: 'edit-select' }, editrules: { required: true, edithidden: true} });
        }

次に、ページャーの追加オプションで、beforeShowFormコールバックを使用して、国のselect入力のchangeイベントにメソッドをアタッチし、そのメソッド内で、現在の国に基づいて状態をフェッチし、selectコントロールを再設定します。

beforeShowForm: function (form) {
                $("#Countries").unbind("change").bind("change", function () {
                    var states = ajaxCallToFetchStates();
                    //Manually clear and re-populate the states select box here with the new list of states.
                });
                $('#tr_AccountCode', form).show();
            }
于 2012-07-04T19:25:36.580 に答える