2013-04-26 57 views
0

我一直在努力尝试使用Kendo UI网格来获得简单的Web服务/测试页面。更准确的(没有什么幻想,这是一个ASP.NET Web服务。)Kendo UI网格 - 没有填充JSON数据

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">[{"ord_number":"116347  ","ord_company":"HERHER12","origin_cmp_id":"HERHER02","origin_cmp_name":"HERSHEY-WEST PLANT","dest_cmp_id":"EDCPAL","dest_cmp_name":"EDC III BUILDING 1918","orderby_cmp_id":"HERHER12","orderby_cmp_name":"HERSHEY","orderby_cty_nmstct":"Hershey,PA/","billto_cmp_id":"HERHER12","billto_cmp_name":"HERSHEY","billto_cty_nmstct":"Hershey,PA/","ord_status_name":"Completed"},{"ord_number":"116348  ","ord_company":"HERHER12","origin_cmp_id":"HERHER02","origin_cmp_name":"HERSHEY-WEST PLANT","dest_cmp_id":"EDCPAL","dest_cmp_name":"EDC III BUILDING 1918","orderby_cmp_id":"HERHER12","orderby_cmp_name":"HERSHEY","orderby_cty_nmstct":"Hershey,PA/","billto_cmp_id":"HERHER12","billto_cmp_name":"HERSHEY","billto_cty_nmstct":"Hershey,PA/","ord_status_name":"Completed"}]</string> 

[{"ord_number":"116347  ","ord_company":"HERHER12","origin_cmp_id":"HERHER02","origin_cmp_name":"HERSHEY-WEST PLANT","dest_cmp_id":"EDCPAL","dest_cmp_name":"EDC III BUILDING 1918","orderby_cmp_id":"HERHER12","orderby_cmp_name":"HERSHEY","orderby_cty_nmstct":"Hershey,PA/","billto_cmp_id":"HERHER12","billto_cmp_name":"HERSHEY","billto_cty_nmstct":"Hershey,PA/","ord_status_name":"Completed"},{"ord_number":"116348  ","ord_company":"HERHER12","origin_cmp_id":"HERHER02","origin_cmp_name":"HERSHEY-WEST PLANT","dest_cmp_id":"EDCPAL","dest_cmp_name":"EDC III BUILDING 1918","orderby_cmp_id":"HERHER12","orderby_cmp_name":"HERSHEY","orderby_cty_nmstct":"Hershey,PA/","billto_cmp_id":"HERHER12","billto_cmp_name":"HERSHEY","billto_cty_nmstct":"Hershey,PA/","ord_status_name":"Completed"}] 

,这里是被从Web服务调用返回:我的web服务返回JSON数据的字符串

这里是ASP.NET页,我希望将填充数据的内容:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="KendoUI.aspx.cs" Inherits="KendoUI" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <link href="styles/kendo.common.min.css" rel="stylesheet" /> 
    <link href="styles/kendo.default.min.css" rel="stylesheet" /> 
    <script src="js/jquery.min.js"></script> 
    <script src="js/kendo.web.min.js"></script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div id="example" class="k-content"> 
      <div id="grid"></div> 
      <script> 
       $(document).ready(function() { 

       dataSource = new kendo.data.DataSource({ 
        transport: { 
         read: { 
          type: "POST", 
          url: "http://localhost/GridTest/Services/WebService.asmx/GetLegsJSON", 
          dataType: "json" 
         } 
        }, 
        schema: { 
         model: { 
          id: "ord_number", 
          fields: { 
           ord_number: { type: "string"}, 
           ord_company: { type: "string" }, 
           origin_cmp_id: { type: "string" }, 
           origin_cmp_name: { type: "string" }, 
           dest_cmp_id: { type: "string" }, 
           dest_cmp_name: { type: "string" }, 
           orderby_cmp_id: { type: "string" }, 
           orderby_cmp_name: { type: "string" }, 
           orderby_cty_nmstct: { type: "string" }, 
           billto_cmp_id: { type: "string" }, 
           billto_cmp_name: { type: "string" }, 
           billto_cty_nmstct: { type: "string" }, 
           ord_status_name: { type: "string" } 
          } 
         } 
        }, 
        pageSize: 10, 
        type: "json" 
       }); 

       $("#grid").kendoGrid({ 
        autobind: false, 
        dataSource: dataSource, 
        pageable: true, 
        columns: [ 
         { title: "Order #", field: "ord_number" }, 
         { title: "Company", field: "ord_company" }, 
         { title: "Origin ID", field: "origin_cmp_id" }, 
         { title: "Origin CN", field: "origin_cmp_name" }, 
         { title: "Dest ID", field: "dest_cmp_id" }, 
         { title: "Dest CN", field: "dest_cmp_name" }, 
         { title: "Order By ID", field: "orderby_cmp_id" }, 
         { title: "Order By CN", field: "orderby_cmp_name" }, 
         { title: "Order By C/S", field: "orderby_cty_nmstct" }, 
         { title: "BillTo ID", field: "billto_cmp_id" }, 
         { title: "BillTo CN", field: "billto_cmp_name" }, 
         { title: "BillTo C/S", field: "billto_cty_nmstct" }, 
         { title: "Status", field: "ord_status_name" } 
        ] 
        }); 
       }); 
      </script> 
     </div> 
    </form> 
</body> 
</html> 

但没有填充,但在表头与页脚“没有条款显示”。

对于我的生活,我看不到我做错了什么。

+0

似乎是正确的!当你在浏览器中打开http://localhost/GridTest/Services/WebService.asmx/GetLegsJSON时,你会得到什么?你包含的JSON? – OnaBai 2013-04-26 22:51:11

+0

我得到了包含的XML。尽管我的方法使用了以下属性:[ScriptMethod(ResponseFormat = ResponseFormat.Json,UseHttpGet = true)] – 2013-04-29 14:56:18

+0

为了清楚起见,我的web服务方法返回一个字符串。我正在使用JavaScriptSerializer类来序列化一个通用的对象列表。当我在调试器中检查返回类型的值时,它不包含在XML中。 Web服务似乎将其包装在XML中,我无法弄清楚如何告诉不要。 – 2013-04-29 15:00:13

回答

1

,你得到XML的事实无需担心。这是默认配置,除非您已经篡改了web.config(或machine.config)。尝试使用$ .ajax()来使用该服务,并确认那里的结果是JSON,因为这是DataSource将会执行的操作。这个问题必须在POST和GET之间进行,当您使用.asmx提供的自动生成页面时,该服务的访问方式与其他标头不同,并且与使用$ .ajax()

不同,为您的结果。创建一个代表你的数据模型的类,并设置你的webMethod作为该类返回,然后在该方法中,使用该类构造一个对象并返回该对象。 WebService将根据您的ScriptMethod提示自动解析并返回JSON。一个伟大的文章,解释这种方式太常见的错误是http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/

0

尝试添加contentType财产

read: { 
    ... 
    contentType: "application/json; charset=utf-8" 
}