Kendo ui 剑道UI网格批量更新

Kendo ui 剑道UI网格批量更新,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我使用以下代码创建了一个网格 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <div id="grid-wrapper" style="margin: 5px 5px;height: calc(100% - 10px)"> <div class="k-content" id="grid"> </div>

我使用以下代码创建了一个网格

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<div id="grid-wrapper" style="margin: 5px 5px;height: calc(100% - 10px)">
    <div class="k-content" id="grid">

    </div>
</div>
<script type="text/x-kendo-template" id="fts">
    <input type="search" id="search" class="k-input k-textbox" style="width: 150px" />
</script>   
<script>
    // 数据源
    var crudServiceBaseUrl = "data/infra/roles";
    var ds_options = {
        url: crudServiceBaseUrl,
        dataType: "json",
        contentType : 'application/json; charset=UTF-8',
        type : 'POST'
    };
    var dataSource = new kendo.data.DataSource({
        transport: {
            read:  ds_options,
            update: ds_options,
            destroy: ds_options,
            create: ds_options,
            parameterMap: function(options, operation) {
                options.action = operation;
                return kendo.stringify(options);
            }
        },
        batch: true,
        pageSize: 10,
        serverPaging : true,
        serverFiltering : true,
        serverSorting : true,
        schema: {
            total : "total",
            data : "data",
            model: {
                id: "roleID",
                fields: {
                    roleID: { editable: true, nullable: false },
                    sortNo: { validation: { required: true } },
                    roleName: { validation: { required: true } },
                    roleStatus: { },
                    allocated: {type : 'number' }
                }
            }
        },
        requestEnd : function(e){
            console.log('request end of role grid');
        },
        error : function(e){
            console.log('error happened:' + e.errors);
        }
    });

    function edit(){
        alert('edit');
    }

    var grid = $("#grid").kendoGrid({
        dataSource : dataSource,
        toolbar : [{
            text: "新增",
            imageClass: "k-add",
            className: "k-grid-add",
            iconClass: "k-icon",
            click : function(e){
                alert('add');
            }
        },{
            text: "编辑",
            imageClass: "k-edit",
            className: "a-g-e",
            iconClass: "k-icon",
        },{
            text: "删除",
            imageClass: "k-delete",
            className: "a-g-d",
            iconClass: "k-icon"
        },{
            template : $("#fts").html()
        }],
        height : '100%',
        pageable: true,
        columns: [
            { field:"roleID", title: "角色编号", visible : false},
            { field:"sortNo", title: "排序号"},
            { field:"roleName", title: "角色名称"},
            { 
                field:"roleStatus", 
                title: "角色状态",
                filterable: {
                    ui: statusFilter
                }
            },
            { field:"allocated", title: "已分配用户数"}
        ],
        editable: "popup",
        resizable: true,
        selectable : "row",
        sortable : true,
        filterable: {
            extra : false,
            messages: {
                info: "查询条件:", // sets the text on top of the filter menu
                filter: "查询", // sets the text for the "Filter" button
                clear: "清除", // sets the text for the "Clear" button

                // when filtering boolean numbers
                isTrue: "是", // sets the text for "isTrue" radio button
                isFalse: "否", // sets the text for "isFalse" radio button

                //changes the text of the "And" and "Or" of the filter menu
                and: "且",
                or: "或"
            },
            operators: {
                //filter menu for "string" type columns
                string: {
                    eq: "等于",
                    neq: "不等于",
                    startswith: "以……开始",
                    contains: "包含……",
                    endswith: "以……结束"
                },
                //filter menu for "number" type columns
                number: {
                    eq: "等于",
                    neq: "不等于",
                    gte: "大于等于",
                    gt: "大于",
                    lte: "小于等于",
                    lt: "小于"
                },
                //filter menu for "date" type columns
                date: {
                     eq: "等于",
                    neq: "不等于",
                    gte: "大于等于",
                    gt: "大于",
                    lte: "小于等于",
                    lt: "小于"
                },
                //filter menu for foreign key values
                enums: {
                    eq: "等于",
                    neq: "不等于"
                }
            },
        },
        navigatable : false,
        reorderable : true,
        columnMenu: {
            messages: {
                sortAscending: "升序排列",
                sortDescending: "降序排列",
                filter: "过滤条件",
                columns: "选择列"
            }
        }
    }).data('kendoGrid');

    function statusFilter(ele){
         ele.kendoDropDownList({
             dataTextField: "text",
             dataValueField: "value",
             dataSource: [{text : "正常", value : "1"}, {text : "停用", value : "2"}],
             optionLabel: "--Select Value--"
         });
    }

    $('.a-g-e', '#grid').bind('click', function(e){
        grid.editRow(grid.select());
    });

    $('.a-g-d', '#grid').bind('click', function(e){
        grid.removeRow(grid.select());
    });
</script>
<style scoped>
.k-dropdown-wrap {
    margin-bottom : 2px
}
</style>

// 数据源
var crudServiceBaseUrl=“数据/infra/roles”;
变量ds_选项={
url:crudServiceBaseUrl,
数据类型:“json”,
contentType:'application/json;charset=UTF-8',
类型:“POST”
};
var dataSource=new kendo.data.dataSource({
运输:{
阅读:ds_选项,
更新:ds_选项,
销毁:ds_选项,
创建:ds_选项,
parameterMap:功能(选项、操作){
选项。操作=操作;
返回剑道。stringify(选项);
}
},
批次:对,
页面大小:10,
对,,
是的,
对,,
模式:{
总计:“总计”,
数据:“数据”,
型号:{
id:“roleID”,
字段:{
roleID:{可编辑:真,可空:假},
sortNo:{验证:{必需:true}},
roleName:{验证:{必需:true}},
罗莱斯塔斯:{},
已分配:{type:'number'}
}
}
},
requestEnd:函数(e){
log('request end of role grid');
},
错误:函数(e){
log('发生错误:'+e.errors);
}
});
函数编辑(){
警报(“编辑”);
}
var grid=$(“#grid”).kendoGrid({
数据源:数据源,
工具栏:[{
文本:“新增",
imageClass:“k-add”,
类名:“k-grid-add”,
图标类:“k图标”,
点击:功能(e){
警报(“添加”);
}
},{
文本:“编辑",
imageClass:“k-edit”,
类名:“a-g-e”,
图标类:“k图标”,
},{
文本:“删除",
imageClass:“k-delete”,
类名:“a-g-d”,
图标类:“k图标”
},{
模板:$(“#fts”).html()
}],
高度:“100%”,
pageable:对,
栏目:[
{字段:“roleID”,标题:角色编号“,可见:false},
{字段:“sortNo”,标题:排序号"},
{字段:“roleName”,标题:角色名称"},
{ 
字段:“roleStatus”,
标题:“角色状态",
可过滤:{
用户界面:状态过滤器
}
},
{字段:“已分配”,标题:已分配用户数"}
],
可编辑:“弹出”,
可调整大小:正确,
可选:“行”,
可排序:是的,
可过滤:{
额外:错,
信息:{
信息:“查询条件:“,//设置筛选菜单顶部的文本
过滤器:“查询“,//设置“过滤器”按钮的文本
清除:“清除“,//设置“清除”按钮的文本
//过滤布尔数时
isTrue:“是“,//设置“isTrue”单选按钮的文本
isFalse:“否“,//设置“isFalse”单选按钮的文本
//更改过滤器菜单的“和”和“或”的文本
及∶且",
或:或"
},
操作员:{
//“字符串”类型列的筛选菜单
字符串:{
等式:“等于",
neq:“不等于",
开始使用:“以……开始",
包含:“包含……",
endswith:“以……结束"
},
//“数字”类型列的筛选菜单
编号:{
等式:“等于",
neq:“不等于",
gte:“大于等于",
gt:“大于",
lte:“小于等于",
lt:“小于"
},
//“日期”类型列的筛选菜单
日期:{
等式:“等于",
neq:“不等于",
gte:“大于等于",
gt:“大于",
lte:“小于等于",
lt:“小于"
},
//外键值的筛选菜单
枚举:{
等式:“等于",
neq:“不等于"
}
},
},
可导航:false,
可重定额:对,
列菜单:{
信息:{
排序:升序排列",
下流:“降序排列",
过滤器:“过滤条件",
列:“选择列"
}
}
}).数据(“kendoGrid”);
功能状态过滤器(ele){
ele.kendoDropDownList({
dataTextField:“文本”,
dataValueField:“值”,
数据源:[{text:]正常,值:“1”},{text:停用,值:“2”}],
选项标签:“--选择值--”
});
}
$('a-g-e','#grid').bind('click',函数(e){
grid.editRow(grid.select());
});
$('a-g-d','#grid').bind('click',函数(e){
grid.removeow(grid.select());
});
.k-下拉式包装{
底部边距:2倍
}
每次单击
添加
编辑
按钮时,默认弹出窗口都会显示“更新”“按钮;当我完成编辑并单击
update
按钮时,修改会立即转到服务器。我怎样才能让它只保存对本地数据源的更改,而只在用户单击“保存”按钮时将更改发送到服务器

在Kendoui网站上的批量编辑示例中,我发现如果更改包括创建、更新和
grid.editRow(grid.select());