Kendo UI Grid Column键入日期有问题

时间:2014-11-26 11:20:26

标签: kendo-ui kendo-grid

我有一个网格,它有很多列类型的日期。这些所有网格都是从通用函数生成的,因此我无法知道列类型是否为日期。有一条规则通过所有列进行验证。所有列name都以" Date"结尾。后缀。例如,createDate,editDate,visitedDate等......

这样,我可以理解它可以是日期,我就像你在dataSource parse函数中看到的那样解析它 我更新单元格时遇到问题。它没有反映出自己对Model的价值。日期列 proto 函数返回"无效日期"错误。我不明白它发生了什么

var dataSource =  new kendo.data.DataSource({
    "data": [
        {
            "hidden_gridColumns": "",
            "id": "21632",
            "projectId": "146",
            "customerTypeId": "4",
            "district": "0",
            "fieldSize": "12",
            "fieldType": "0",
            "floorCoveringType": "12",
            "lastChangeDate": null,
            "estimatedModificationDate": null,
            "latestCompany": ""
        }
    ],
    "schema": {
        "model": {
            "id": "id",
            "fields": {
                "gridColumns": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "projectId": {
                    "type": "string"
                },
                "customerTypeId": {
                    "type": "string"
                },
                "district": {
                    "type": "string"
                },
                "fieldSize": {
                    "type": "string"
                },
                "fieldType": {
                    "type": "string"
                },
                "floorCoveringType": {
                    "type": "string"
                },
                "lastChangeDate": {
                    "type": "date"
                },
                "estimatedModificationDate": {
                    "type": "string"
                },
                "latestCompany": {
                    "type": "string"
                }
            }
        },
        parse: function(data){
            $.each(data,
            function(rowNo,
            row){
                $.each(row,
                function(colName,
                column){
                    if(colName.indexOf("Date")>=0){
                        console.log(colName + " taranıyor");
                        row[colName] = kendo.parseDate(row[colName], "dd-MM-yyyy");
                    }
                });
            });
            return data;
        }
    },
    "batch": true
})

这是我的列结构:

var columns = [
    {
        "title": "gridColumns",
        "field": "gridColumns",
        "hidden": true
    },
    {
        "title": "id",
        "field": "id",
        "hidden": true
    },
    {
        "title": "projectId",
        "field": "projectId",
        "hidden": true
    },
    {
        "title": "Müşteri Tipi",
        "field": "customerTypeId",
        "hidden": false,
        "width": "91",
        "values": [
            {
                "value": "1",
                "text": "Yurtiçi "
            },
            {
                "value": "2",
                "text": "Yurtdışı"
            },
            {
                "value": "3",
                "text": "Spor Kulübü"
            },
            {
                "value": "4",
                "text": "Diğer"
            },
            {
                "value": "5",
                "text": "Üniversite"
            },
            {
                "value": "6",
                "text": ""
            }
        ]
    },
    {
        "title": "district",
        "field": "district",
        "hidden": true,
        "width": "132"
    },
    {
        "title": "Saha Ölçüsü",
        "field": "fieldSize",
        "hidden": false,
        "width": "85"
    },
    {
        "title": "Saha Türü",
        "field": "fieldType",
        "hidden": false,
        "values": [
            {
                "value": "1",
                "text": "Açık"
            },
            {
                "value": "0",
                "text": "Kapalı"
            }
        ]
    },
    {
        "title": "Halı Cinsi",
        "field": "floorCoveringType",
        "hidden": false,
        "width": "76"
    },
    {
        "title": "Son Halı değişim Tarih",
        "field": "lastChangeDate",
        "hidden": false,
        "format": "{0:dd-MM-yyyy}"
    },
    {
        "title": "Tahmini Yenileme Tarihih",
        "field": "estimatedModificationDate",
        "hidden": false

    },
    {
        "title": "Son Çalıştığı Halı Firması",
        "field": "latestCompany",
        "hidden": false
    }
]

1 个答案:

答案 0 :(得分:0)

我通过以下代码解决了这个问题:

     parse: function(response) {
                 var tmpData=[];
                 for (var i = 0; i < response.length; i++) {
                        var tmpRow = response[i];
                        $.each(tmpRow, function(colNo, colValue){
                           if(colNo.indexOf("Date")>-1){                                 
                               tmpRow[colNo]=kendo.parseDate(new Date(tmpRow[colNo]));                               
                           } 
                        });
                        tmpData.push(tmpRow);
                      }
                return tmpData;
}