Kendo Grid和一行JSON数据和一行数据

时间:2014-06-24 20:48:20

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

我将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);
                });
            }
        }
    },
});

3 个答案:

答案 0 :(得分:0)

我想我可以在将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);
}

答案 1 :(得分:0)

我认为字段名称不需要双引号。 Ex / name \ value对,如{name:“Bob Mazzo”}

答案 2 :(得分:0)

您确定控制器中有2个定义(一个用于View,另一个用于检索数据),View调用另一个定义如下所示?

<强>控制器:

//!!! 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"))
    )
)


...问候