【问题标题】:jqGrid multiple row selection advancedjqGrid多行选择高级
【发布时间】:2012-04-21 13:34:24
【问题描述】:

我想要 jqGrid 中的以下能力。 当用户单击网格中的复选框时,会选择一行。 当用户随后单击“控制键”并选择复选框时,用户随后可以选择更多行。然后,当用户单击复选框并且如果选择了当前行,则选择当前行。 jqGrid可以做到这一点吗? 但是,单击单元格时不会发生任何事情。复选框中应该只有事件可用。

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    是的,应该可以。看一下checkbox selection 的普通示例 - 它让您了解其中的一部分。但是,它并没有真正按照您期望的方式处理 SHIFT 选择内容。

    我做了一些搜索,在 jqGrid 支持网站上找到了这段代码:

    function multiSelectHandler(sid, e) {
        var grid = $(e.target).closest("table.ui-jqgrid-btable");
        var ts = grid[0], td = e.target;
        var scb = $(td).hasClass("cbox");
        if ((td.tagName == 'INPUT' && !scb) || td.tagName == 'A') {
            return true;
        }
        var sel = grid.getGridParam('selarrrow');
        var selected = $.inArray(sid, sel) >= 0;
        if (e.ctrlKey || (scb && (selected || !e.shiftKey))) {
            grid.setSelection(sid,true);
        } else {
            if (e.shiftKey) {
                var six = grid.getInd(sid);
                var min = six, max = six;
                $.each(sel, function() {
                        var ix = grid.getInd(this);
                        if (ix < min) min = ix;
                        if (ix > max) max = ix;
                    });
                while (min <= max) {
                    var row = ts.rows[min++];
                    var rid = row.id;
                    if (rid != sid && $.inArray(rid, sel)<0) {
                        grid.setSelection(row.id, false);
                    }
                }
            } else if (!selected) {
                grid.resetSelection();
            }
            if (!selected) {
                grid.setSelection(sid,true);
            } else {
                var osr = grid.getGridParam('onSelectRow');
                if ($.isFunction(osr)) {
                    osr(sid, true);
                }
            }
        }
    }
    

    要使用它,您应该能够将 beforeSelectRow 处理程序设置为此函数。前任。像这样:

    $("#gridid").jqGrid({
    // Rest of code to configure grid
    beforeSelectRow: multiSelectHandler,
    // Other handlers/configuration
    });
    

    【讨论】:

    猜你喜欢
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2022-08-19
    • 2010-11-16
    相关资源
    最近更新 更多