0

次のように、jqgrid テーブルで選択を定義しました。

{name: 'station', index: 'station', editable: true, width: 60,
  edittype:"select", defaultValue:"",
  editoptions:{
         dataUrl: "getStationList"
  },
  editrules: { required: true }
},

getStationList は次のようなものを返します。

<select>
<option value="id1">Station1</option>
<option value="id2">Station2</option>
</select>

現在の定義では、コンボが初めて表示されたときに、ステーションのリスト (Station1、Station2、...) が適切に表示され、ステーション 1 が選択されたときに JSON に「id1」が含まれます。しかし、テーブルが更新されると、ステーションのリストを表示し続ける代わりに、選択コンボに「id1」が表示されます。

それはバグですか、それとも設定オプションがありませんか? (たぶん最後)

ありがとう!

4

1 に答える 1

1

グリッドを埋める際にすでに問題があると思います。名前の代わりに ID を使用する場合は、formatter: "select" 追加で使用する必要があります (ドキュメントedittype:'select'を参照してください)。この場合、グリッドにデータを入力する際に​​グリッドに ID を配置する必要があります。つまり、jqGrid sould の入力データにはandの代わりにandが含まれています。which provideを使用できる場合のみ。次の問題は、使用方法の代わりにorを設定する必要があることです。そのため、 の使用法は比較的複雑です。できることは、データをメイン グリッド データの一部として送信することです。次のように配置できますid1id2"Station1""Station2"dataUrl<option value="id1">Station1</option>editoptions.valueformatoptions.valuedataUrl: "getStationList"formatter: "select"{"id1":"Station1", "id2":"Station2"} {stations: {"id1":"Station1", "id2":"Station2"}}userdataJSON 入力の一部 (ドキュメントを参照)。beforeProcessingコールバックの内部では、にformatoptions.value基づいて設定できますuserdata.stations。事実上getStationList、データの編集中だけでなく、グリッドのすべての塗りつぶし中にもリクエストを行う方法です。

formatter: "select"私は個人的に noを使用し、フォームで selects を使用することを好みます

<select>
    <option value="Station1">Station1</option>
    <option value="Station2">Station2</option>
</select>

クライアントコードがデータ表現の実装の詳細について何も「知らない」方法で。グリッドにデータ「Station1」と「Station2」を入力し、グリッドの編集中に同じデータを送信します。反対側のサーバーは、必要なときにいつでも名前で ID を取得します。Stations通常、 「ID」や「名前」などの列を持つ「ルックアップ」テーブルを作成する場合、設定します

CONSTRAINT UC_Stations_Name UNIQUE NONCLUSTERED (Name ASC)

したがって、名前でIDを取得できるテーブルには一意のインデックスがあります。このように、Name を使用したすべての Update ステートメントは、Id を使用した場合とまったく同じように高速です。すべての内部 SQL ステートメントで Id を使用しますが、Name のみを外部ソースに送信します。方法で私は使用する必要はありませんformatter: "select"

于 2013-04-11T12:18:04.817 に答える