如何在jqGrid中设置双击函数来调用自定义函数?
How do I set doubleClick function to call custom function in jqGrid
我在jqGrid导航器上添加了一个自定义编辑按钮控件,如下所示:
jQuery("#grid").navButtonAdd('#pager',
{
caption:"Edit",
buttonicon:"ui-icon-pencil",
onClickButton: editSelectedRow,
position: "last",
title:"click to edit selected row",
cursor: "pointer",
id: "edit-row"
}
);
因此,而不是使用默认函数:editGridRow,它使用我的自定义函数editSelectedRow。但是,我还想添加doubleClick函数,以便它在doubleClick上调用editSelectedRow。
使用默认的editGridRow函数是这样工作的
ondblClickRow: function()
{
var rowid = jQuery("#grid").jqGrid('getGridParam','selrow');
jQuery(this).jqGrid('editGridRow', rowid);
}
然而,当我用我的默认函数editSelectedRow代替默认的editGridRow函数时,
ondblClickRow: function()
{
var rowid = jQuery("#grid").jqGrid('getGridParam','selrow');
jQuery(this).jqGrid('editSelectedRow', rowid);
}
在firebug中得到以下错误:
uncaught exception: jqGrid - No such method: editSelectedRow
函数editSelectedRow确实存在,并与单击自定义编辑按钮一起工作。请帮忙,谢谢。
:@Oleg:根据要求,这里的代码定义方法:editSelectedRow
function editSelectedRow(rowid)
{
var rowid = jQuery("#grid").jqGrid('getGridParam','selrow');
if( rowid != null )
{
var dialogId = '#edit-form-dialog';
var dialogTitle = 'Edit Customer';
$(dialogId).load('/customer/edit/id/' + rowid, function ()
{
$(this).dialog(
{
modal: false,
resizable: true,
minWidth: 650,
minHeight: 300,
height: $(window).height() * 0.95,
title: dialogTitle,
buttons:
{
"Save": function ()
{
var form = $('form', this);
$(form).submit();
$("#grid").trigger("reloadGrid");
},
"Cancel": function ()
{
$("#grid").trigger("reloadGrid");
$(this).dialog('close');
}
}
});
LaunchEditForm(this);
});
}
else
{
jQuery( "#dialogSelectRow" ).dialog();
}
return false;
}
@Oleg:谢谢,您建议不要使用自定义方法editSelectedRow来代替editGridRow。我使用这个的原因是,我的形式是Zend形式,我需要所有的铃声和哨子的Zend形式可用。服务器生成这个表单,并将其加载到一个对话框表单中。如果有一种方法可以在不诉诸我的editSelectedRow自定义方法的情况下仍然实现这一点,我很乐意学习它。谢谢。
你的问题是纯粹的JavaScript问题。
如果将函数editSelectedRow
定义为
function editSelectedRow(rowid)
{
...
}
你可以称它为editSelectedRow(rowid)
而不是jQuery(this).jqGrid('editSelectedRow', rowid);
。
另一个问题是您在editSelectedRow
函数体内使用this
。这是不对的。你可以用另一种方式定义editSelectedRow
函数
var editSelectedRow = function (rowid) {
...
};
在这种情况下,editSelectedRow
将能够将this
绑定到任何值。为此,需要使用另一种形式的函数调用。在ondblClickRow
内部,它将是
ondblClickRow: function () {
var rowid = jQuery("#grid").jqGrid('getGridParam','selrow');
editSelectedRow.call(this, rowid);
}
在上面的例子中,call
的第一个参数是函数内部用作this
的值。我们只将当前this
的值转发给editSelectedRow
。如果使用形式editSelectedRow(rowid);
调用函数,则函数内部的this
的值将初始化为window
对象。
navButtonAdd
内部editSelectedRow
的用法可以保持不变。
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用