同じ列に異なるオプション値を持つ選択ボックスが必要なグリッドを用意します。たとえば、この問題をトラブルシューティングするために設定されたテスト グリッドでは、選択ボックスを使用して映画から俳優の 1 人を選択するというコンセプトが採用されています。各行には、異なる映画のデータがあります。各行内のアクター列には、その行の選択ボックスに動的に入力するために使用する必要があるアクターの異なるリストがあります。アクター リストは、データベース内の CSV、カンマ区切りの値として設定されます: IE、Clint Eastwood、Tom Cruz、Vin Diesel。
行われたテストから、列モデルが設定されると、グリッドのロードごとに 1 回だけ実行されるように見えます。つまり、列内のすべての選択ボックスに対して 1 つのオプション セットしか取得できないということです。ループ ブロックを設定して、グリッドにデータを入力する php ファイル (この場合は myfirtgridajax.php) に適切なコードを生成することにより、必要な値を含む html 文字列を返されたデータとしてグリッドに正常に渡しました。選択ボックスに適切な値を指定すると、列モデルで設定された選択ボックスのようには動作しません。
{... edittype:select, edit options:{value:{CE:'Clint Eastwood'... }}}
必要なのは、データベースに別の値を設定する選択ボックスから、POST 要求が onChange または同じ結果で生成されることです。つまり、Clint Eastwood が選択された場合、POST リクエストを生成して、その値を別の php ページに渡して処理する必要があります。
私の質問は、html 文字列を渡すことによって作成された選択ボックスにイベントリスナーを設定するハックが機能するように見えますが、これを行うためのより良い方法はありますか?
<script>
$(function () {
$('#displayresultstable').jqGrid({
url:'../gridcalls/myfirstgridajax.php',
datatype:'json',
mtype: 'GET',
colNames:['ID', 'movie', 'topic', 'rating','actors'],
colModel :[
{name:'ID', index:'ID', width:50},
{name:'movie', index:'movie', width:200, editable:true},
{name:'topic', index:'topic', width:350, editable:true},
{name:'rating', index:'rating', width:50, editable:true },
{name:'actors', index:'actors', width:350, editable:true },
],
pager: '#pager',
rowNum:10,
height: 'auto',
rowList:[5,10,15],
sortname:'ID',
sortorder: 'desc',
viewrecords: true,
gridview: true,
cellEdit: true,
cellurl:'../editfirstgridajax.php',
caption: 'Movie Greats'
});
$('#displayresultstable').jqGrid('navGrid','#pager', {view: true});
});
</script>
<table id='displayresultstable'>
<tr><td></td></tr>
</table>
<div id='pager'></div>
ありがとう