2012-01-13 24 views
3

今週jqGridで作業を開始しました。関数呼び出しで定義された異なるpostDataパラメータでjqGridをロードするために呼び出すことができるジェネリック関数を作成しようとしています。postDataパラメータとして配列を送信

これを行う方法はありますか?私が考えていたのは、パラメータの名前/値を格納する配列を作成し、それをpostDataのパラメータとして設定することでした。 Webサービスは、SQLストアドプロシージャコールにこれらのパラメータを追加して追加します。

var paramArray = new Array(); 
var p1 = new JQGridParam("CustomerName","John"); 
var p2 = new JQGridParam("ProductName","Kleenex"); 
var p3 = new JQGridParam("YearPurchased","2012"); 

paramArray[0] = p1; 
paramArray[1] = p2; 
paramArray[2] = p3; 

$("#list").jqGrid({ 
    datatype: "json", 
    url: "services/Customers.asmx/GetCustomerData", 
    mtype: "POST", 
    postData: { 
     sqlParams: paramArray   //HERE IS WHERE I NEED THE HELP 
    }, 
    ajaxGridOptions: { contentType: "application/json; charset=utf-8" }, 
    ajaxRowOptions: { contentType: "application/json; charset=utf-8" }, 
    serializeGridData: function (postData) { 
        return JSON.stringify(postData); 
    }, 
    serializeRowData: function (postData) { 
        return JSON.stringify(postData); 
    }, 
    jsonReader: { 
     root: function (obj) { return obj.d.rows; }, 
     page: function (obj) { return obj.d.page; }, 
     total: function (obj) { return obj.d.total; }, 
     records: function (obj) { return obj.d.records; }, 
    }, 
    colModel: [ 
     {name: "CustID", index: "CustID" }, 
     {name: "PurchaseAmount", index: "PurchaseAmount" }], 
    colNames: ["Customer ID", "Amount Purchased"], 
    pager: $("#pager"), 
    loadOnce: true, 
    rowNum: 10, 
    rowList: [10,25,50], 
    gridview: true, 
    viewrecords: true 
}); 

私はこれをしようとすると、それはエラーが「のSystem.Arrayを入力するタイプの可能System.Stringのオブジェクトを変換することはできません」スロー:ここでは

は、一般的なコードです。誰でもこのことについてどのように考えているのですか?

答えて

3

JSONは配列を文字列化します。

JSON.stringify(paramArray); 

次に、WebサービスでJSONデータをオブジェクトにキャストします。

+0

オブジェクトにキャストするコードを投稿してください。少なくとも配列にキャストバックしてください。ありがとう。 – CodeLover

0

JSON.stringifyは、C#でMVC .NETを使用して私のために動作しませんでした。代わりに、私はちょうどフォームをシリアライズし、URLの一部としてデータを送っ:私は、この問題を回避するための「POST」としてMTYPEを残し

$("#myGrid").jqGrid({ 
     url: '<%=Url.Action("MyControllerMethod", "MyController") %>' + 
      '?' + $('#myForm').serialize(), 

。 postDataを使用して、個々の数値や文字列を取得して配列を作成することはできませんでした。この回避策では、C#MVCで配列を使用できます。

関連する問題