【发布时间】:2011-08-29 19:08:08
【问题描述】:
我正在使用Oleg 的suggestion 来使用beforeSelectRow 事件来处理对网格中单元格的点击。
奥列格在他的回答中的代码(我的完全模仿):
您可以使用如下按钮定义列
{ name: 'add', width: 18, sortable: false, search: false,
formatter:function(){
return "<span class='ui-icon ui-icon-plus'></span>"
}}
在上面的代码中,我确实使用了 jqGrid 的自定义格式化程序,但没有任何事件绑定。代码
beforeSelectRow: function (rowid, e) {
var iCol = $.jgrid.getCellIndex(e.target);
if (iCol >= firstButtonColumnIndex) {
alert("rowid="+rowid+"\nButton name: "+buttonNames[iCol]);
}
// prevent row selection if one click on the button
return (iCol >= firstButtonColumnIndex)? false: true;
}
firstButtonColumnIndex = 8和buttonNames = {8:'Add',9:'Edit',10:'Remove',11:'Details'}。在您的代码中,您可以将警报替换为相应的函数调用。
问题是我的网格也是可排序的-(我在我的网格上使用sortableRows 方法)。如果用户在单击单元格时稍微移动鼠标,则永远不会触发beforeSelectRow 事件(可排序事件是)。
这在大多数情况下都是可取的 - 但是,我认为解决此问题的方法是以某种方式将列排除在“句柄”之外以拖动(排序)行并让我的 onSelectRow 事件在这些列上触发。我似乎无法弄清楚如何做到这一点!非常感谢任何帮助:)
【问题讨论】: