2011-12-27 25 views

答えて

3

編集と削除には「editurl」という値が1つしかありません。だからあなたはそれを更新する必要があります。あなたがそうのように、setGridParamでediturlの値を変更することができます。

$("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo'); 

あなたが現在選択された行の内容に基づいてロジックを使用して、そのURLを構築したい場合は、このような何かを:

onSelectRow: function(id){ 
    var rowData = $("#jqGridTable").getRowData(id); 
    // example logic 
    if (rowData['col1'] == 'foo' && rowData['col2'] == 'bar') 
     $("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo/bar'); 
    else 
     $("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo'); 
} 
+1

+1でなければなりません。私はそれが**唯一の方法ではないと思う**。 – Oleg

+0

私は「唯一の道」をこのようにすることは決してしませんでしたが、私が言ったようにほとんど音がします。 「これを更新する必要があるだけだ」と言ったときの意味は、これを達成するための独占的な手段ではなく、そうするのが最も簡単な方法でした。 –

+0

OK、あなたの言葉を正確に繰り返すわけではありませんが、 'editurl'は本当に変更できる唯一のパラメータではありません。 [navGrid](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#definition)の 'prmEdit'、' prmAdd'または 'prmDel'パラメータの中で' url'プロパティを使うと、 'editurl'は無視されます。しかし私はあまりにも正式であることを望んでいません。私はその前に、あなたが提案した方法はうまくいくはずだと言って、質問からの主な問題だったと思われる 'getRowData'の使い方について書きました。 – Oleg

2

私はJake Feaselが「」と書いたので、私は自分の答えを書くことにしました。編集と削除の値は「editurl '」です。私は多くの方法があり、最高のものは他の要件に依存していると思います。

一般的にサーバに送信されたデータは、POSTなどのHTTPリクエストの種類木の部分から

  1. から成る、まで
  2. URLの一部をPUTまたはDELETE「?」文字
  3. '?'の後に続くURLのパラメータ。 HTTPののデフォルトパー文字
  4. HTTPリクエスト

の体をjqGridは、HTTP POSTリクエストを使用し、ID(またはmultiselect: trueの場合はIDのカンマ区切りリスト)の情報を配置要求。 HTTPリクエストのタイプを変更した場合は、サーバーに送信する情報の場所を本文からURLなどに変更する必要があります。使用の場合、サーバー側のRESTfulサービスは、削除操作にHTTP DELETEを使用する必要があり、その場合は空の本体があります。

何らかの方法で、行の編集または削除に関する追加情報を記入するコールバック関数(イベント)を使用します。コールバック関数の内部では、削除行または編集行の他のセルに関する追加情報を得るために、getRowDataまたはgetCellmethodsを使用できます。時々、正確な状況に依存して、方法がうまくいかない。編集中に、<input>,<select>またはその他のコントロールに変更されたセルからの情報を取得しようとすると、インライン編集のセル編集の場合になります。この場合、回避策として使用できる他のトリックがあります(たとえば、hereを参照)。

1つの方法は、最後に選択した行を削除または編集するため、onSelectRowのURLを変更することです。私は$("#jqGridTable")の代わりに$(this)を使用します。

urlonclickSubmithereおよびhereを参照)の内側に変更することもできます。

は、URLの部分を '?'に変更する必要がある場合にのみ使用することをお勧めします。文字paramNama=paramValue&で割ったようなURLにパラメータを追加する必要がある場合は、代わりにeditDataまたはdelDataパラメータを使用することをお勧めします。パラメータには関数を含めることができます。 hereまたはhereを参照してください。

本文の変更を変更する必要がある場合は、serializeDelDataまたはserializeEditDataを使用できます。

多くの方法があり、他の要件に応じて最適な方法が異なります。

+0

私は通常、$( '#jqGridTable')ではなく$(this)を使用しますが、完全なコンテキストがなければ、それはもっと混乱すると考えました。 –

1

私は上記の誤植があると思います。 それは、私はあなたに同意

$("#jqGridTable").setGridParam({'editurl':'myNewUrl/foo/bar'}); 

ない

$("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo/bar'); 
関連する問題