Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 剑道网格JSON不一致_Jquery_Json_Kendo Ui - Fatal编程技术网

Jquery 剑道网格JSON不一致

Jquery 剑道网格JSON不一致,jquery,json,kendo-ui,Jquery,Json,Kendo Ui,我从一个不一致的API返回json,这意味着一些记录与它们关联“年龄”,而其他记录则没有 我正在尝试填充剑道UI网格,以便显示/操作数据。不幸的是,当没有与之关联的“年龄”的记录返回时,剑道会出现错误:uncaughtreferenceerror:Age未定义 以下是工作网格的示例: 这是一个网格,其中一条记录返回时没有“Age”:-您可以在控制台中看到错误,而不是页面本身 有没有什么方法可以让网格足够动态,以理解年龄没有返回,将其设置为null,然后继续 我正在使用的代码: var d

我从一个不一致的API返回json,这意味着一些记录与它们关联“年龄”,而其他记录则没有

我正在尝试填充剑道UI网格,以便显示/操作数据。不幸的是,当没有与之关联的“年龄”的记录返回时,剑道会出现错误:uncaughtreferenceerror:Age未定义

以下是工作网格的示例:

这是一个网格,其中一条记录返回时没有“Age”:-您可以在控制台中看到错误,而不是页面本身

有没有什么方法可以让网格足够动态,以理解年龄没有返回,将其设置为null,然后继续

我正在使用的代码:

    var data = [
    {
    FirstName: 'John',
    LastName: 'Doe',
    City: 'New York City',
    Title: 'Supervisor',
    BirthDate: '1/1/1975',
    Age: '37',
    },
    {
    FirstName: 'Jane',
    LastName: 'Doe',
    City: 'Buffalo',
    Title: 'Sales Associate',
    BirthDate: '1/1/1980',

    }
    ]
$(document).ready(function() {
        var grid = $("#grid").kendoGrid({
            dataSource: {
                data: data,
                schema: {
                    model: {
                        fields: {
                            FirstName: { type: "string" },
                            LastName: { type: "string" },
                            City: { type: "string" },
                            Title: { type: "string" },
                            BirthDate: { type: "date" },
                            Age: { type: "number" }
                        }
                    }
                },
                pageSize: 10
            },
            height: 500,
            scrollable: true,
            sortable: true,
            selectable: true,
            filterable: true,
            pageable: true,
            columns: [
                {
                    field: "FirstName",
                    title: "First Name"
                },
                {
                    field: "LastName",
                    title: "Last Name"
                },
                {
                    field: "City"
                },
                {
                    field: "Title"
                },
                {
                    field: "BirthDate",
                    title: "Birth Date",
                    template: '#= kendo.toString(BirthDate,"MM/dd/yyyy") #'
                },
                {
                    field: "Age"
                }
            ]
        }).data("kendoGrid");

    });

​非常感谢您的帮助。谢谢

我不确定剑道网格是否那么灵活,但您可以做的是在将数据源放入网格之前对其进行处理。您可以将年龄添加为数据源中的一个字段,或者根据存在的字段设置网格。如果在源代码上执行CRUD操作,这可能不起作用,但如果只是显示数据,这可能对您很好

其他人可能对剑道框架有更好的了解,这只是一个快速解决方案的建议


希望有帮助

为什么不尝试将缺少的字段(年龄)作为null发送。如果您从控制器获取数据,可以添加一个额外字段并将其发送到UI。这将使事情以正确的方式进行。只是我的意见…

剑道网格不支持缺少的值。对象必须包含每行的每个成员,才能将其绑定到网格。空/空值应该是空字符串或空值,但它们必须存在于JSON结果中。

对于您的列,添加一个带有data.field的模板即可

       ...
       columns: [
            {
                field: "FirstName",
                title: "First Name",
                template: "#= data.FirstName != null ? FirstName : '' #"
            },
            {
                field: "LastName",
                title: "Last Name",
                template: "#= data.LastName != null ? LastName : '' #"
            },
            {
                field: "City",
                template: "#= data.City != null ? City : '' #"
            },
            {
                field: "Title",
                template: "#= data.Title != null ? Title : '' #"
            },
            {
                field: "BirthDate",
                title: "Birth Date",
                template: '#= data.BirthDate != null ? kendo.toString(BirthDate,"MM/dd/yyyy") : "" #'
            },
            {
                field: "Age",
                template: "#= data.Age != null ? Age : '' #"
            }
        ]
        ...

这是一个很好的解决方案,我看到的唯一问题是会有很多变量字段,所以我不可能预测和“硬编码”所有这些字段来解决这个问题。不过我还是很感激你的建议。