2012-03-10 30 views

回答

2

首先你應該定義WebMethod這將提供jqGrid的數據。如果您打算實現服務器端排序和分頁將WebMethod至少應該有以下參數

public JqGridData TestMethod (int page, int rows, string sidx, string sord) 

其中JqGridData類將例如像

定義
public class TableRow { 
    public int id { get; set; } 
    public List<string> cell { get; set; } 
} 
public class JqGridData { 
    public int total { get; set; } 
    public int page { get; set; } 
    public int records { get; set; } 
    public List<TableRow> rows { get; set; } 
} 

還有其他不同的選擇是一個人怎樣填補網格,但首先要理解至少一種方法。

重要的是,要從Web方法返回JSON數據,您不需要手動將返回的數據轉換爲JSON。只需要返回帶有數據的對象,ASMX Web服務就會根據HTTP請求的頭文件將對象本身序列化爲XML或JSON。

它的請求到服務器將有application/json; charset=utf-8application/json在HTTP標頭的Content-Type部分,返回的數據將是JSON和將

{ 
    "d": { 
     "page": 1, 
     "total": 4, 
     "records": 4, 
     "rows": [ 
      ... 
     ] 
    } 
} 

在客戶端,你應該使用

$("#list").jqGrid({ 
    url: 'MyTestWS.asmx/TestMethod', 
    datatype: 'json', 
    mtype: 'POST', 
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' }, 
    serializeGridData: function (postData) { 
     return JSON.stringify(postData); 
    }, 
    jsonReader: { 
     root: "d.rows", 
     page: "d.page", 
     total: "d.total", 
     records: "d.records" 
    } 
    gridview: true, 
    ... 
} 

查看here的代碼示例。

已更新Herehere您可以下載Visual Studio演示項目。有關更多指向其他演示項目的鏈接,請參閱the answer