3

Jqgridを使用するC#バックエンドを備えたASP.NETWebサイトがあります。

ユーザーがグリッド内のアイテムを選択して編集できるようにしたいと思います。編集可能なフィールドの1つは、そのユーザーに有効なオプションのみを含むドロップダウン選択リストとしてユーザーに表示されます。

たとえば、人を表示するグリッドがあるとします。「person1」を編集した場合、ユーザーはこのアイテムの選択リストから「青」または「赤」を選択できる場合がありますが、「person2」を編集した場合、ユーザーは「黄色」または「緑」のみを選択できます。選択リスト。

選択された人/行に基づいて、選択リストに動的にデータを入力したいと思います。

次のように、特定のフィールドにeditoptionsとdataurlを設定しています。

editoptions: { dataUrl: 'FetchData.aspx' }

それでも、特定の人物の身元調査を行い、特定の「人物」の正しいリストを作成できるように、FetchData.aspxページに渡す何らかのパラメータが必要です。

選択された特定の行/アイテムを識別するために、次のようにROWIDまたはアイテム名などを渡すことができると期待していました。

editoptions: { dataUrl: 'FetchData.aspx?selecteditem=' + Id }

特定のアイテムのアイテムの正しいリストを作成できるように、パラメーターを渡すにはどうすればよいですか?ウェブ上にも同様の質問が無数にありますが、決定的な答えを見つけることができませんでした...

4

2 に答える 2

3

次のonSelectRow関数を追加することで問題を解決しました(以下のコードの「Id」は、パラメーターとして渡したい列の名前を表します。グリッド内の任意の列名にすることができます):

onSelectRow: function (id) {
  var temp = $("#list").getRowData(id)['Id']
  $("#list").setColProp('mySelectListColumnName', { editoptions: { dataUrl:'FetchData.aspx?selecteditem=' + temp });
}

上記はパラメータを渡すのに役立ちます。ただし、これだけでは不十分です。FetchData.aspxがパラメーターを受け取り、それに応じてhtml応答をカスタマイズできますが、dataUrlから値を1回だけフェッチするため、別の行を選択しても更新されません。

これを解決するために、次のステートメントも追加しました。

jQuery.extend(jQuery.jgrid.edit, { recreateForm: true });

これにより、編集がクリックされるたびに編集フォームが再作成されます。これは、編集フォームが行ごとにわずかに異なるため、私が望むものです。完璧に動作します。これが誰かを助けてくれることを願っています-そこには選択肢の迷路があり、これは私が見た中で最も単純です。そしてそれは動作します。

于 2012-07-18T06:09:43.707 に答える
0

これをデフォルトに追加します。

jQuery.extend(jQuery.jgrid.edit, { recreateForm: true });

そしてこれをグリッドパラメータに:

ajaxSelectOptions: {
    data: {
        selecteditem: function() { return $('#list').jqGrid('getGridParam', 'selrow'); } }
}
于 2014-09-06T20:45:18.857 に答える