【问题标题】:JQGrid - Multiselect [closed]JQGrid - 多选[关闭]
【发布时间】:2011-05-10 08:22:06
【问题描述】:

JQGrid 中的多选仅允许多选或单选,并且移位功能不是我期望的移位选择所做的。我也不喜欢我们需要带有多选功能的组合框。

我还可以为多选使用什么其他解决方案?

【问题讨论】:

  • 我不认为 SO 真的是展示您的商品的地方。
  • SO 是一个 QA 网站...你没有问问题...写博客。我投票关闭
  • 不想成为 m8 它看起来不错,我认为可能有更好的地方可以放置它。即在Jquery 插件站点。虽然很高兴看到热情,但我只是不希望 SO 变成露天市场。
  • @Byron:这应该以正常的问答格式呈现。询问导致您找到此解决方案的问题,然后发布您的解决方案作为答案。
  • 正如比尔所说,来自常见问题解答:It's also perfectly fine to ask and answer your own question, as long as you pretend you're on Jeopardy: phrase it in the form of a question.

标签: jquery jqgrid multi-select


【解决方案1】:

[2011 年 10 月] 更新为使用 4.0 API,更正了换档选择错误,简化了选择循环。在 4.2.0 中测试。


如果像我一样,您需要在 jqgrid 中进行适当的多选 - 其中 ctrl 一次选择一行,select 选择多行,既不清除选择,也不选择 1 行 - 您已经找到了。

第一件事:在网格定义中设置multiselect: true(我没有设置任何其他多选选项)

下一步:gridComplete: function () {} 中设置grid.jqGrid('hideCol', 'cb'); - 如果您不想要复选框,则会隐藏它们。

最后:主要部分

beforeSelectRow: function (rowid, e) {
    if (!e.ctrlKey && !e.shiftKey) {
        $("#grid").jqGrid('resetSelection');
    }
    else if (e.shiftKey) {
        var initialRowSelect = $("#grid").jqGrid('getGridParam', 'selrow');
        $("#grid").jqGrid('resetSelection');

        var CurrentSelectIndex = $("#grid").jqGrid('getInd', rowid);
        var InitialSelectIndex = $("#grid").jqGrid('getInd', initialRowSelect);
        var startID = "";
        var endID = "";
        if (CurrentSelectIndex > InitialSelectIndex) {
            startID = initialRowSelect;
            endID = rowid;
        }
        else {
            startID = rowid;
            endID = initialRowSelect;
        }

        var shouldSelectRow = false;
        $.each($("#grid").getDataIDs(), function(_, id){
            if ((shouldSelectRow = id == startID || shouldSelectRow)){
              $("#grid").jqGrid('setSelection', id, false);
            }
            return id != endID;                        
        });
    }
    return true;
}

结局 - 希望有所帮助

【讨论】:

  • 感谢您发布此内容,但如果代码经过适当测试,它会更有用...
  • 谢谢,请注意:您应该将所有出现的 $('#grid') 替换为 $(this)。
  • @Byron Cobb:出色的解决方案,我 +1。选择还会突出显示网格中的文本。如何防止文本突出显示?如果按下 shift+up/down 箭头键,如何允许从选择中添加/删除选择。
  • @Byron-Cobb: gridComplete: function () { $('#grid').jqGrid('hideCol', 'cb') } 也降低了最后一列的宽度,因此无法使用
  • $grid.jqGrid("getDataIDs") 应该用来允许在旧调用被禁用时工作
猜你喜欢
  • 2016-05-21
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 2011-05-11
  • 2012-01-09
  • 1970-01-01
相关资源
最近更新 更多