Kendo Grid:如何使数据源触发更新并创建事件

时间:2015-02-13 04:09:32

标签: javascript jquery angularjs kendo-ui kendo-grid

我开始研究如何通过数据源将网格编辑回到服务中。

根据文档,我设置了一个本地测试数据源,如下所示。

function getDataSource() {
var gridData = [
{
  col1: new CellData('1', 'data1-1'),
  col2: new CellData('2', 'data1-2')
  },
{
  col1: new CellData('3', 'data2-1'),
  col2: new CellData('4', 'data2-2')
  },
];

var dataSrc = new kendo.data.DataSource({
batch: true,

transport: {
  read: function (e) {
    e.success(gridData);
  },

  update: function (e) {
    // batch is enabled
    var updateItems = e.data.models;

    // This is not called

    // on success
    e.success();
  },

  create: function (e) {
    e.success(e.data);
  },
  destroy: function (e) {
    e.success();
  }
 }
});

 return dataSrc;
}

我有一个工具栏设置(使用“保存更改”),这是调用SaveChanges配置事件,但是,无法看到我需要做什么才能使以下事件发生..

  1. 让数据源更新名为
  2. 将网格标记为“脏”,以便编辑的单元格上的红色“已编辑”指示消失
  3. 我在添加新记录时遇到了同样的问题(虽然我无法获得网格“addRow”甚至在这里开火)

    我有正在运行的示例here

    任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:0)

您需要指定DataSource架构才能工作:

var dataSrc = new kendo.data.DataSource({
    batch: false, // true would mean transport functions get multipe models  in e.data 
    transport: {
        // ....
    },
    schema: {
        data: function (response) {
            return response;
        },
        model: {
            id: "id",
            fields: {
                id: {
                    editable: false,
                    defaultValue: 0 // 0 == new / unsaved row
                },
                col1: {
                    editable: true,
                    // new items would have that using default add button
                    defaultValue: {
                        id: 0,
                        CategoryName: ""
                    }, 
                    fields: { id: { editable: true }, display: { editable: true }
                },
                col2: {
                    editable: true,
                    fields: { id: { editable: true }, display: {  editable: true } }
                }
            }
        }
    }
});

另请注意:

  • grid.saveChanges将同步DS,因此您无需在活动中执行任何操作
  • 没有addRow事件。
  • 默认"创建"按钮将尝试添加一个空对象;因为你使用嵌套对象,你需要自己添加行,以便初始化属性;因此,您需要一个自定义按钮并手动绑定您的操作

demo