2010-11-26 96 views
1

我是jquery和jqgrid的新手。我使用ASP.NET WebForms。我能夠獲得一些數據舞臺服務器並在網格中顯示它。我使用PageMethods從服務器獲取數據。通常我的代碼是jqGrid - 編輯數據

function CreateGrid(){ 
    $("#sestGrid").jqGrid({ 
     datatype: GetData, 
     //toolbar: [true, "top"], 
     colNames: ['Name', 'Age'], 
     colModel: [ 
      { name: 'Name', index: 'Name', width: 170, align: 'left', 
       sortable: false, key: true }, 
      { name: 'Age', index: 'Age', width: 40, align: 'center', 
       sortable: false, editable: true }, 
     ], 
     ondblClickRow: function() { 
      var row_id = $("#sestGrid").getGridParam('selrow'); 
      $('#sestGrid').editRow(row_id, true); 
     } 
    }); 
} 

function GetData() { 
    PageMethods.GetSestevalniStevecData(GotData); 
} 

function GotData (data) { 
    $("#sestGrid").clearGridData(false); 
    for (var j = 0; j <= data.length; j++) 
     $("#sestGrid").jqGrid('addRowData', j + 1, data[j]); 
} 

所以,現在我想編輯一些數據並將其發佈到服務器。我怎樣才能使用PageMethods?我應該使用其他方法嗎?

還有一件事。我檢查了演示http://trirand.com/blog/jqgrid/jqgrid.html,並且在所有編輯示例中,您只能編輯一行,然後必須保存更改......是否可以編輯多行並將所有更改保存在一個步驟中?

謝謝大家。

回答

1

jqGrid旨在與ajax服務一起使用。因此,如果用戶更改某行的數據,那麼更改將發送到服務器:到您通過jqGrid參數editurl配置的URL。因此,實現行編輯的最簡單方法是在您的網站中包含ASMX Web服務或WCF服務。無論您是使用ASP.NET WebForms,ASP.NET MVC還是隻使用純HTML都不重要。因此,只需選擇您喜歡的技術,並將相應的頁面添加到您的網站。

的ASMX或WCF應該有一個像

public string MyDataEdit (string Age, string oper, string id) 

與簽名的方法(見this更多信息,舊的答案)。在添加操作的情況下,該方法應返回新添加的項目的ID(您的案例中的Name)。

還有一點小話。您可以將ondblClickRow功能的定義從function()更改爲function(row_id),並刪除使用的行getGridParam('selrow')

+0

奧列格,感謝您的答覆! 你的文章幫助我提高了我的jqgrid知識。 因此,如果我確定每行都在編輯後發佈到服務器。是否可以編輯幾行並通過單擊一個按鈕將它們全部發布到服務器? – user521379 2010-11-27 20:04:40

0

我用你的榜樣,並改變了一點:

ondblClickRow: function (rowid) { 
if (rowid && rowid != lastsel) { 
    changedRows.push(rowid); //keep row id 
    jQuery('#jqgrid').editRow(rowid, true); 
} 
} 

下保存按鈕單擊事件:

$.each(changedRows, function() { 
    var row = $("#jqgrid").getRowData(this); 
    var Id = row['ID']; 
    var price = $(row['Price']).val(); //this is an input type 
}); 

HTH有人:)