2

setColProp を使用して値を edittype に動的にロードしていますselect

呼び出すたびに値が正常に読み込まれます。

loadComplete: function() {
                $("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });
            },

ただし、ここでのみ機能し、一度だけ機能します。の値を変更し、contract_list呼び出して jqgrid を更新しようとすると

$("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });

どこからでも(ボタンのクリック、afterSubmit、またはテーブルのリロードから)、何もしません。

私が間違っていることはありますか?

編集:これは、私がやろうとしていることのより良い説明です。

id の jqGrid テーブルがあります#profile_table

これはcolModel、jqGrid コードの一部です。

colModel:[
                {name:'contract_num',index:'contract_num', editable: true, hidden: false, width:30, edittype: "select", editrules: {required: true}},   
]

最初はcontract_num、編集/追加フォームの編集フィールドのselectボックスには値がありません。contract_listテーブルが作成される前に作成される、呼び出された JavaScript 変数から初期値をロードします。以下を使用して、これらの値を最初にロードします。

loadComplete: function() {
                $("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });
            },

contract_listこれは正常に機能しますが、このテーブルが表示されているページでユーザーが何かを変更すると、 の値が変更される可能性があります。したがって、このテーブルの編集/追加フォーム内のフィールドのselectボックス内のオプションを動的に更新しようとしています。contract_num内の値を正常に変更しましたcontract_listが、実際のselectボックスを新しい値に更新できません。

次のように呼び出して更新しようとしています:

$("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });

誰かが の値を変更するたびにグリッドをリロードしcontract_listますが、テーブルは更新されません。

4

1 に答える 1

4

フォーム編集のrecreateForm: trueオプションを使用すれば、主な問題は解決されると思います(使用例はこちらを参照)。呼び出す前に、設定をデフォルトとして設定することをお勧めしますnavGrid(ここで対応するコードを参照してください)。

また、コメントに書かれている情報から、editoptionsdataUrlの代わりに使用する方がよいと思います。そのため、jqGrid は、編集フォームの作成中にサーバーから値のリストを直接ロードできます。の使用法が役立つ場合もあります。サーバーからのデータを JSON 形式などで提供し、内のサーバー データに基づいて HTML フラグメントを作成するのに役立ちます。さらに、jqGrid オプションを設定するか (こちらまたはこちらを参照) 、HTTP ヘッダーに関して以前のサーバー応答の再検証を強制する必要がある場合があります(こちらおよびこちらを参照) 。valuebuildSelect<select><option value="...">...</option>...</select>buildSelectajaxSelectOptions: { cache: false }dataUrl"Cache-Control: private, max-age=0"

于 2012-04-10T22:59:36.240 に答える