jqGrid数据检索

时间:2015-03-08 13:38:34

标签: asp.net jqgrid

我试图将数据检索到我的数据表(jqGrid)

我能够获得包含所有列和正确数据的JSON格式。

但是,我无法将其加载到表格本身..

这是我的aspx文件代码:

 $(document).ready(function () {
        $("#jqGrid").jqGrid({
            url: "ajaxWebService.asmx/LoadData",
            mtype: "GET",
            loadonce: true,
            datatype: "json",
            colModel: [

                  {
                      label: "Edit your item",
                      name: "actions",
                      width: 20,
                      formatter: "actions",
                      formatoptions: {
                          keys: true,
                          editOptions: {},
                          addOptions: {},
                          delOptions: {}
                      }
                  },

            { label: 'Date', name: "date", width: 20, editable: true },
            { label: 'Qty', name: "qty", width: 50, editable: true },
            { label: 'Product Name', name: "ProductName", width: 50, editable: true }

            ],
            viewrecords: true,
            width: 780,
            height: 250,
            rowNum: 10,

            pager: "#jqGridPager"
        });
    });

这是我的函数背后的代码:

public string LoadData()
{
    SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Products", cn);
    DataSet ds = new DataSet();

    List<string> list = new List<string>();
    da.Fill(ds);

    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
    DataTable dt = ds.Tables[0];

    Dictionary<string, object> row;

    foreach (DataRow dr in dt.Rows)
    {
        row = new Dictionary<string, object>();

        foreach (DataColumn col in dt.Columns)
        {
            row.Add(col.ColumnName, dr[col]);
        }

        rows.Add(row);
    }

    string jsonString = js.Serialize(rows);

    return "{ \"rows\":" + JsonConvert.SerializeObject(rows) + "}";
}

1 个答案:

答案 0 :(得分:0)

您发布了服务器代码的代码片段。我想你做了太多的JSON序列化。我建议您使用{/ 3}}或IE / Chrome / Firefox的开发者工具(按 F12 启动,然后使用“网络”选项卡)来跟踪客户端和服务器之间的HTTP流量。 / p>

服务器响应正文中的正确格式化数据可能是

[
    {"date", "2015-03-09", "qty": 2, "ProductName": "foo"},
    {"date", "2015-03-10", "qty": 5, "ProductName": "bar"}
]

"rows": [
    {"date", "2015-03-09", "qty": 2, "ProductName": "foo"},
    {"date", "2015-03-10", "qty": 5, "ProductName": "bar"}
]

如果您在每个"(我的意思是\")之前看到一些额外的反斜杠,那么您进行了不需要的 JSON序列化,您应该删除致电JsonConvert.SerializeObjectLoadData函数的返回值应从string更改为object

下一个典型问题可能是在{"d": "..."}中包装服务器响应的结果。在这种情况下,您需要使用jsonReader参数,该参数通知jqGrid从响应的d属性获取响应的重要部分:

jsonReader: { repeatitems: false, root: "d" }

jsonReader: { repeatitems: false, root: "d.rows" }

取决于服务器响应的确切格式。