在jqGrid树中选择多行

有没有办法在jqGrid树结构中选择多行? 单击任何一行我提供内联编辑工具,双击我扩展行。

如果我选择保持shift键的行,则应选择行。 我指的是multiselect: true ,但它不起作用。

 rowNum:10, rowList:[10,20,30], pager: '#pcolch', sortname: 'no', treeGridModel:'adjacency', autowidth:false, sortorder: 'desc', caption:"Projects > Tasks", toolbar:[true,"top"], treeGrid: true, cellEdit: true, sortable: true, shrinkToFit :true, //viewrecords: true, height:'auto', ExpandColumn:'name', cellsubmit : 'clientArray', multiselect:true, 

Tree Greed当前实现的限制列表在文档中似乎并不完整。 如果你检查jqGrid的源代码,你将罚款重置一些其他jqGrid参数的行:

 multiselect = false; subGrid = false; altRows = false; pgbuttons = false; pginput = false; gridview = true; rowNum = 10000; // if rowTotal is null rowList = []; 

因此,Tree Grid的当前实现不支持选择多行

如果你真的需要这样的function,你必须自己实现它。 要执行此操作,您可以在colModel添加具有预定义 “checkbox”格式化程序的列,该格式化程序具有formatoptions: {disabled: false}作为附加选项,并实现您需要的选择行为。 有关详细信息,请参阅答案和本文 。 可能需要在beforeSelectRow回调中实现一些其他操作。

我不确定这是否仍然有用,但今天我通过设置aria-selected属性(true / false)并添加/删除了一个树形网格中的多选项选项(Click / Ctrl-Click / Shift-Click)。用于视觉效果的ui-state-highlight类。

这一切都发生在beforeRowSelect回调中,它返回false以防止正常的行选择回调。

希望这可以帮助别人! 我的计划就像一个5岁的孩子,所以请放轻松我吧! 🙂

最后一点:变量lastSelIdx是一个存储最后一个选择行索引的全局变量,需要在函数外声明。

 beforeSelectRow: function(id, e) { var row = $("#" + id); var currSelIdx = $("#tree").getInd(id) - 1; if (e.ctrlKey) { // Ctrl was pressed - Add to selection or remove if (row.attr("aria-selected") == "true") { row.removeClass("ui-state-highlight").attr("aria-selected", "false"); } else { row.addClass("ui-state-highlight").attr("aria-selected", "true"); } lastSelIdx = currSelIdx; } else if (e.shiftKey) { // Shift was pressed. Select all between last selected and curently selected var rows = $(".jqgrow"); // Select all rows between the last selected if (!lastSelIdx) lastSelIdx = 0; if (lastSelIdx > currSelIdx) { selmin = currSelIdx; selmax = lastSelIdx; } else { selmin = lastSelIdx; selmax = currSelIdx; } for (i = 0; i < rows.length; i++) { if (i >= selmin && i <= selmax) { $(rows[i]).addClass("ui-state-highlight").attr("aria-selected", "true"); } else { $(rows[i]).removeClass("ui-state-highlight").attr("aria-selected", "false"); } } } else { // Simple click $("tr[aria-selected=true]").each(function() { $(this).removeClass("ui-state-highlight").attr("aria-selected", "false"); }); row.addClass("ui-state-highlight").attr("aria-selected", "true"); lastSelIdx = currSelIdx; } return false; },