2013-06-20 65 views
0

我想填充jqgrid存儲在隱藏字段中的數據。我已經成功嘗試了從serverdata填充網格的方法(data type = json)。但在這裏我需要這樣。下面是我做的:Jqgrid本地數據格式化使用Jsonconvert不工作

控制器:

 DataTable myTable= MyData.getAllData(); 

     string s = JsonConvert.SerializeObject(myTable); 

     model.GridData = s; 

     return this.View(model); 

查看:

var mydata = $('#GridData').val();

當我使用alert(MYDATA)在這裏,我可以看到

[{ 「ID」:1, 「ToCurrencyID」:2, 「貨幣」: 「阿聯酋」, 「國家「: 」阿拉伯聯合酋長國迪拉姆「, 」短名「: 」AED「, 」ExchRate「:20.000}]

這裏是jqGrid的代碼:

jQuery(document).ready(function() { 
     jQuery("#list").jqGrid({ data: mydata, 
      datatype: "local", 
      height: 150, 
      width: 600, 
      rowNum: 10, 
      rowList: [10, 20, 30], 
      colNames: ['Sl#', 'currencyId_Hidden', 'Country', 'Currency', 'Short Name', 'Exchange Rate'], 
      //columns model/* 
      colModel: [ 
         { name: 'id', index: 'id', align: "left", sortable: false, width: '34px' }, 
         { name: 'ToCurrencyID', index: 'ToCurrencyID', sortable: false, align: "left", hidden: true }, 
         { name: 'currency', index: 'currency', align: "left", sortable: false, width: '366px' }, 
         { name: 'country', index: 'country', align: "left", sortable: false, width: '366px' }, 
         { name: 'shortName', index: 'shortName', width: '141px', sortable: false, align: "left" }, 
         { name: 'ExchRate', index: 'ExchRate', width: '382px', sortable: false, align: "right" } 
        ], 
      pager: "#pager", 
      loadonce: true, 
      viewrecords: true, 
      caption: "Contacts" 
     }); 

    }); 

問題是,網格沒有得到填充。

但是,當我直接使用,

VAR MYDATA = [{ 「ID」:1, 「ToCurrencyID」:2, 「貨幣」: 「阿聯 酋長國」, 「國家」 :「阿拉伯聯合酋長國迪拉姆」,「shortName」: 「AED」,「ExchRate」:20.000}];

它,工作正常。

我認爲jqgrid本身需要一個json數組,而不僅僅是一個字符串。有什麼建議麼?

+0

我需要的是'$ .parseJSON(mydata)'!謝謝你們。 – Sharun

回答

0

我只需要將mydata(現在是一個字符串變量)轉換爲Json。現在一切正常。

 jQuery("#list").jqGrid({ data: $.parseJSON(mydata), 
       datatype: "local", 
       height: 150, 
       width: 600, 
       rowNum: 10, 
       rowList: [10, 20, 30], 
       .. 
       .. 
       }); 
1

您使用的控制器的代碼看起來非常可疑。您使用this.View(model)返回結果,並根據JsonConvert.SerializeObject進行手動JSON序列化。而不是那個人應該使用return Json(yourData, JsonRequestBehavior.AllowGet);從控制器操作返回JsonResult。在jqGrid中應該使用選項datatype: "json", url: UrlOfControllerAction而不是datatype: "local", data: mydata

如果你想返回所有數據一次沒有實現服務器端分頁數據你應該使用loadonce: true選項datatype: "json"。取決於返回數據的確切格式,並取決於您使用的jqGrid的版本,您可能需要使用jsonReader,它通知jqGrid如何從服務器的JSON響應中獲取數據。

如果您需要實現服務器端分頁,排序和過濾數據,您可以在the answer中找到相應代碼的示例。

+0

謝謝Oleg ..我knw我可以使用'datatype:「json」,url:UrlOfControllerAction'。 Bu這種特殊情況下,我需要將json數據(格式爲:[{..},{...}])與其他模型數據一起傳遞。我認爲問題是,我已經將griddata作爲字符串而不是JsonResult發送。但正如我所提到的,我無法使用返回Json,因爲我想將整個模型發送到視圖。有沒有辦法將視圖中的普通字符串視爲json數據? – Sharun

+0

好吧,我找到了解決方案。使用:'$ .parseJSON(mydata)' – Sharun

+0

@Sharun:在包含'mydata'的數據不正確的情況下。數據應該是*字符串*'「[{\」id \「:1,\」ToCurrencyID \「:2,\」currency \「:\」United Arab Emirates \「,\」country \「:\」阿拉伯聯合酋長國迪拉姆「,\」shortName \「:\」AED \「,\」ExchRate \「:20.000}]」'而不是*對象*'[{「id」:1,「ToCurrencyID」:2 ,「currency」:「阿拉伯聯合酋長國」,「country」:「阿拉伯聯合酋長國迪拉姆」,「shortName」:「AED」,「ExchRate」:20.000}]。無論如何,我很高興你的問題現在得到解決。 – Oleg