从DataSource插入或更新时防止重复值

时间:2016-03-23 12:50:33

标签: javascript kendo-ui kendo-grid

知道在下面的代码结构中插入或更新时如何验证重复值?

在创建或更新事件之前,我在何处以及如何添加验证以验证网格中是否存在重复记录?

提前感谢指南。

    var ds = new kendo.data.DataSource({        
        transport : {
            read : {
                url : 'readAttribute/',
                dataType : 'json',
                type : 'POST',
                complete : function(e) { }
            },
            create : {
                url : 'save/',
                dataType : 'json',
                type : 'post',
                contentType : 'application/json',
                complete : function(e) {
                    $('#dataGrid').data('kendoGrid').dataSource.read();
                }
            },
            update : {
                url : 'update/',
                dataType : 'json',
                type : 'post',
                contentType : 'application/json',
                complete : function(e) {
                    $('#dataGrid').data('kendoGrid').dataSource.read();
                }
            },
            destroy : {
                url : 'delete/',
                dataType : 'json',
                type : 'post',
                contentType : 'application/json',
                complete : function(e) {
                    $('#dataGrid').data('kendoGrid').dataSource.read();
                }
            },
            parameterMap : function(options, operation) {
                if ((operation == 'create' || operation == 'update') && options.models) {
                    var valueData = options.models;
                    for (var i = 0; i < valueData.length; i++) {
                        valueData[i]['valTypeId'] = $("#valTypeDropDown").data("kendoDropDownList").value();
                    }

                    var valFullData = {};
                    valFullData['val_data'] = valueData;
                    valFullData['val_type_id'] = $("#valTypeDropDown").data("kendoDropDownList").value();

                    return kendo.stringify(valFullData);
                }

                if (operation == 'destroy') {
                    return kendo.stringify(options.models);
                }

                if (operation == 'read') {
                    return {
                        valTypeId : $("#valTypeDropDown").data("kendoDropDownList").value()
                    };
                }
            }
        },
        batch : true,
        pageSize : com.babysister.client.Configuration.Constants.ListConfig.pageSize,
        sortable : true,
        scrollable : true,
        schema : {
            model : {
                id : "id",
                fields : {
                    id : {
                        type : "number"
                    },
                    name : {
                        type : "string",  
                        validation: { 
                            required: { message: "Name is required!" }
                        }
                    },
                    valTypeId : {
                        type : "number"
                    }
                }
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您希望在Kendo网格本身上使用edit事件,而不是您显示的DataSource。有示例代码here(用于订阅edit事件)。