ドロップダウン列を持つjqgridを作成しており、セル編集を使用しています。ドロップダウン列のオプションを動的に変更する必要があり、列を次のように設定してこれを実装しようとしました。
{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },
そして beforeCellEdit イベントで私は持っています:
beforeEditCell: function(id, name, val, iRow, iCol) {
if(name=='AccountLookup') {
var listdata = GetLookupValues(id, name);
if (listdata == null) listdata = "1:1";
jQuery("#grid").setColProp(name, { editoptions: { value: listdata.toString()} })
}
},
GetLookupValues は、「1:One;2:Two」などの形式の文字列を返すだけです。これは正常に機能しますが、オプションは 1 クリック後に入力されます。つまり、行 1 の AccountID をクリックすると、ドロップダウンが空になりますが、次に行 3 の AccountID をクリックします。行 1 のクリックで設定したオプションが行 3 のクリックに表示されます。等々。そのため、常に 1 クリック遅れます。
必要なものを達成する別の方法はありますか? 基本的に、表示されるドロップダウン オプションは常に変化しており、ユーザーが編集のためにセルに入力したときにそれらをロードする必要があります。おそらく、setColProp 呼び出しを使用する代わりに、beforeEditCell イベントで選択コントロールを取得し、その値を手動で入力できますか? もしそうなら、私はそれを行う例を得ることができますか?
もう 1 つのこと - ドロップダウンが空で、ユーザーがセルの編集をキャンセルしない場合、グリッド スクリプトはエラーをスローします。それが違いを生む場合、私は clientarray 編集を使用しています。