kmk*_*kmk 2 javascript jqgrid multi-select
我正在使用jqGrid columnChooser,如下所示:
jQuery(grid).jqGrid(
'navButtonAdd',
pagerDiv,
{
caption: "Columns",
buttonicon: "ui-icon-newwin",
title: "Hide/Show Columns",
onClickButton: function () {
$(this).jqGrid('columnChooser', {
done: function (perm) {
if (perm) {
$(this).jqGrid('remapColumns', perm, true);
}
},
modal: true,
width: 400,
height: 300,
classname: 'column-chooser-select'
});
}
}
);
Run Code Online (Sandbox Code Playgroud)
并且想知道是否有一种方法可以在columnChooser上指定一个事件处理程序(使用带有jqGrid的jQuery UI Multiselect插件),无论何时添加或删除列,都会触发该事件处理程序.所以我想这是一个由两部分组成的问题:
关于我正在努力实现的目标的一些背景知识:
我的默认网格配置隐藏了许多列.其中一些列不是从db填充的 - 它们是模糊的,很少使用的数据元素,如果填充将大大降低查询执行性能(涉及具有1亿多条记录的表的多个连接).
如果用户选择其中一列进行显示,我想警告他们需要另一次到服务器的往返,这可能需要一段时间 - 并为他们提供取消列添加的选项.
谢谢
我想我理解你的问题并且发现你的问题很有趣,所以我为你编写了演示程序,它展示了如何解决问题.
columnChooser在内部使用jQuery UI Multiselect插件,它使用jQuery UI Sortable.所以我建议使用jQuery UI Sortable的sortreceive事件来捕获所需的信息.
代码可以是以下内容
$("#grid").jqGrid('navButtonAdd', '#pager', {
caption: "",
buttonicon: "ui-icon-calculator",
title: "Choose columns",
onClickButton: function () {
$(this).jqGrid('columnChooser');
$("#colchooser_" + $.jgrid.jqID(this.id) + " ul.selected")
.bind("sortreceive", function (event, ui) {
alert('column "' + ui.item.text() + '" is choosed');
});
$("#colchooser_" + $.jgrid.jqID(this.id) + " ul.available a.action")
.click(function () {
alert('column "' + $(this).parent().text() + '" is choosed');
});
}
});
Run Code Online (Sandbox Code Playgroud)
请在此处查看演示.
代码将"+"上的"click"事件绑定到对话框初始化时列选择器中列的初始列表.我认为这对你来说已经足够了.如果需要,您可以轻松修改代码以支持"+"上的"点击"列,这些列将在使用期间从左侧列表中删除columnChooser.
我差点忘了提到我在演示中使用的改进版本columnChooser(见答案),但我的上述建议也适用于原版本columnChooser.
| 归档时间: |
|
| 查看次数: |
5087 次 |
| 最近记录: |