【问题标题】:Kendo Grid and one row of JSON data and a single row of dataKendo Grid和一行JSON数据和单行数据
【发布时间】:2014-06-24 20:48:19
【问题描述】:

我将 JSON 结果提供给 My Kendo Grid;好像当我有一行数据时,网格无法运行?

以下作品:

<DocumentElement>
    <ResultXml>
        <NoData>1</NoData>
    </ResultXml>
    <ResultXml>
        <NoData>2</NoData>
    </ResultXml>
</DocumentElement>";

这不起作用:

<DocumentElement>
    <ResultXml>
        <NoData>1</NoData>
    </ResultXml>
</DocumentElement>";



编辑以清除上面的 xml 在被馈送到网格之前转换为 json(为了便于阅读,我包含了 json 的 xml 版本) 显然上面是xml;使用 Newtonsoft.Json.JsonConvert 后,我​​得到以下 JSON 结果以提供给我的网格(都不起作用):

{"DocumentElement":{"ResultXml":"Nothing to display"}}
{"DocumentElement":{"ResultXml":{"field":"Nothing to display"}}}

以下工作,但如果我不需要,我想避免发送空字段

{"DocumentElement":{"ResultXml":[{"NoData":null},{"NoData":"Nothing to display"}]}}

编辑结束

这是我的剑道网格:

$("#grid").kendoGrid({
    sortable: true,
    groupable: true,
    scrollable: true,
    height: "600px",
    pageable: { pageSizes: 9 },
    dataSource:
    {
        transport:
        {
            read: function (options) {
                $.ajax("/Controller/Action?param=" + paramVal, 
                 success: function (result) {
                    var jResult = $.parseJSON(result);
                    options.success(jResult.DocumentElement.ResultXml);
                });
            }
        }
    },
});

【问题讨论】:

  • 老兄,你确定 blah blah 是 JSON 吗?你应该把它当作 XML 对待,你很高兴
  • 哈哈谢谢!这是一个有效的观点:) 我忘了包括我将 xml 转换为 json 的部分;我将进一步编辑问题。不过谢谢:)

标签: asp.net-mvc json kendo-ui kendo-grid


【解决方案1】:

我想我可以在将 json 字符串发送回客户端时对其进行硬编码;我希望有一个说我有空数据集的 xml 版本;但我想这会做,除非有人能提出更好的建议;

if (string.IsNullOrEmpty(xmlResult))
{
    //No data: 
    jsonData = "{\"DocumentElement\":{\"ResultXml\":[{\"NoData\":\"Nothing to display\"}]}}";
}
else
{
    //Turn xml data to Json:
    var doc = new XmlDocument();
    doc.LoadXml(xmlResult);
    jsonData = JsonConvert.SerializeXmlNode(doc);
}

【讨论】:

    【解决方案2】:

    我相信字段名不需要双引号。 Ex/ 名称\值对,如 {name: "Bob Mazzo"}

    【讨论】:

    • 我认为问题与将“field:val”对视为对象与数组有关;当我有两个“field:val”实例时,JsonConvertor 将其转换为数组;但是如果只有一个实例,它就会变成一个对象;所以我不得不在 Kendo 的 JSON 数据源版本和 Newton 的转换方式之间进行斗争; JsonConvertor 没有创建数组是正确的;如果字段不在 JSON 数组中,则 Kendo 不显示字段是错误的
    【解决方案3】:

    您确定您的控制器中有 2 个定义(一个用于视图,另一个用于检索数据)并且视图调用另一个定义如下?

    控制器:

    //!!! This is for calling "CustomAjaxBinding" view
    public ActionResult CustomAjaxBinding()
    {
        return View();
    }
    
    //!!! This is for retrieving data called from "CustomAjaxBinding" View
    public ActionResult CustomAjaxBinding_Read([DataSourceRequest] DataSourceRequest request)
    {
        var dataContext = new SampleEntities();
    
        //Convert to view model to avoid JSON serialization problems due to circular references.
        IQueryable<OrderViewModel> result = dataContext.Orders.Select(o => new OrderViewModel
        {
            OrderID = o.OrderID,
            ShipCity = o.ShipCity,
            ShipCountry = o.ShipCountry,
            ShipName = o.ShipName
        });
    return Json(result, JsonRequestBehavior.AllowGet);      
    }
    



    视图(名称为“CustomAjaxBinding”)

    @(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.Order>()
        .Name("Grid")
        .Columns(columns => {
            columns.Bound(o => o.OrderID).Groupable(false);
            columns.Bound(o => o.ShipCity);
            columns.Bound(o => o.ShipCountry);
            columns.Bound(o => o.ShipName);
        })
        .Pageable()
        .Sortable()
        .Filterable()
        .Scrollable()
        .Groupable()
        .DataSource(dataSource => dataSource
            .Ajax()
    
            //!!! Call "CustomAjaxBinding_Read" not CustomAjaxBinding
            .Read(read => read.Action("CustomAjaxBinding_Read", "Grid"))
        )
    )
    


    问候...

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多