2011-12-27 101 views

回答

3

編輯和刪除只有一個值:'editurl'。所以你只需要更新那個。你可以用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

好吧,我不會重複你的話,但'editurl'並不是唯一可以修改的參數。如果在[prmEdit],[navGrid](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#definition)的'prmAdd'或'prmDel'參數中使用'url'屬性, 'editurl'將被忽略。但我不想太過正式。我之前說過,你建議的方式應該工作,你寫了關於'getRowData'的用法,這似乎是問題的主要問題。 – Oleg

2

我決定寫我的答案只是因爲傑克Feasel寫道「只有一個值編輯和刪除:'editurl'」在他的答案。我認爲有很多方法,最好的方法取決於其他要求。

通常發送到服務器的數據從樹份

  1. 類型等POST HTTP請求組成,PUT或DELETE
  2. 的URL,直到所述的部分「?」字符
  3. 直到'?'後面的URL參數字符
  4. HTTP請求的主體

每默認的jqGrid使用HTTP POST請求和放置信息有關的ID(或逗號在multiselect: true殼體分離id列表)在的HTTP的請求。如果您更改HTTP請求的類型,則可能必須更改從主體發送到服務器的信息的位置。在服務器端使用RESTful服務的情況下,應該使用HTTP DELETE進行刪除操作,並且在案例中具有空主體。

以任何方式使用一些回調函數(事件)來填充有關編輯或刪除行的其他信息。在回調函數內部,可以使用getRowDatagetCellmethods來獲取刪除行或編輯行其他單元的附加信息。有時取決於具有哪種方法的確切情況將不起作用。如果您嘗試從單元格中獲取信息,在編輯過程中將更改爲<input><select>或其他控件,將會出現內聯編輯的單元格編輯。如果還有其他技巧可以用作解決方法(例如參見here)。

其中一種方法是更改​​onSelectRow中的URL,因爲可以刪除或編輯最後一個選定的行。我只會使用$(this)而不是$("#jqGridTable")

另一種方法是更改​​onclickSubmit(參見herehere)中的url

只有當需要更改URL部分直到'?'時,我推薦使用這兩種方式。字符。如果您只需要向url添加其他參數,如paramNama=paramValue除以&,則可以更好地使用editDatadelData參數。參數可以包含功能。見herehere

如果您需要更改機構的請求,您可以使用serializeDelDataserializeEditData

所以有很多方法,哪一個最好的方法取決於你的其他要求。

+0

我通常也會使用$(this)而不是$('#jqGridTable'),但是如果沒有完整的上下文,我認爲這會更令人困惑。 –

1

我想上面有一個錯字,。 應該

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

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