首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向dstore备份的dgrid中添加列。

向dstore备份的dgrid中添加列。
EN

Stack Overflow用户
提问于 2016-02-22 03:00:06
回答 1查看 147关注 0票数 0

我有一个五列的网格-用户名,电子邮件,启用,锁定和删除。

用户名、电子邮件、启用和锁定都来自服务器。Remove是一个客户端元素,用于指示应该删除一行。

我希望在加载网格内容时在客户端的存储中注入缺省值remove,或者在用户与CheckBox小部件交互时设置它。

如何捕获从服务器请求对象的代码并添加另一列?

或者,有没有更好的方法。

代码语言:javascript
复制
var TrackableRest = declare([Rest, SimpleQuery, Trackable]);
var store = new TrackableRest({target: '/api/users', useRangeHeaders: true, idProperty: 'username'});
aspect.after(store, "fetch", function (deferred) {
    return deferred.then(function (response) {
        response.remove = false;
        return json(response);
    })
});
var grid = new (declare([OnDemandGrid, Selection, Editor]))({
    collection: store,
    className: "dgrid-autoheight",
    columns: {
        username: {
            label: core.username
        },
        email: {
            label: core.email
        },
        enabled: {
            label: core.enabled,
            editor: CheckBox,
            editOn: "click",
            sortable: false,
            renderCell: libGrid.renderGridCheckbox
        },
        locked: {
            label: core.locked,
            editor: CheckBox,
            editOn: "click",
            sortable: false,
            renderCell: libGrid.renderGridCheckbox
        },
        remove: {
            editor: CheckBox,
            editorArgs: {"checked": false},
            editOn: "click",
            label: core.remove,
            sortable: false,
            className: "remove-cb",
            renderHeaderCell: function (node) {
                var inp = domConstruct.create("input", {id: "cb-all", type: "checkbox"});
                return inp;
            },
            renderCell: libGrid.renderGridCheckbox
        }
    },
    selectionMode: "none"
}, 'grid');

此外,我不想将列发送到服务器.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-14 01:18:13

我的最后实现是对remove列编写如下代码:

代码语言:javascript
复制
            remove: {
                editor: CheckBox,
                label: core.remove,
                sortable: false,
                className: "remove-cb",
                renderHeaderCell: function (node) {
                    var inp = domConstruct.create("input", {id: "cb-all", type: "checkbox"});
                    return inp;
                }
            }

执行移除的代码如下:

代码语言:javascript
复制
    var removeBtn = new Button({
        label: core.remove
    }, 'user-remove-btn');
    removeBtn.startup();
    removeBtn.on("click", function (event) {
        var markedForDeletion = query(".dgrid-row .remove-cb input:checked", "user-grid");
        if( markedForDeletion.length > 0 ) {
            lib.confirmAction(core.areyousure, function () {
                markedForDeletion.forEach(function (node) {
                    var row = grid.row(node);
                    store.remove(row.data.username);
                });
            });
        }
    });

因此,remove列成为客户端仅由网格和事件处理程序处理的控件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35545119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档