我想在jqgrid的每一行中添加一个超链接/按钮,触发自定义的javascript函数。经过多次尝试后仍然没有成功。
addlinks函数中的代码正在执行,但是该列中没有任何内容显示。我尝试使用自定义格式化,但无法显示自定义文本“编辑”,而链接点击也无法触发js方法。
jQuery('#ProductListGrid').jqGrid({
url: '/Product/ProductListGrid',
datatype: 'json',
multiselect: true,
height: 250,
autowidth: true,
mtype: 'GET',
loadComplete: addlinks,
colNames: ['ProductId', 'ProductName', 'edit'],
colModel: [
{ name: 'ProductId', index: 'ProductId',key:true, width: 70, hidden: true, editable: true, size: 5 },
{ name: 'ProductName', index: 'ProductName', width: 70, editable: true },
{ name: 'edit', index: 'edit', width: 70},
],
pager: jQuery('#ProductListGrid_pager'),
});
function addlinks() {
var ids = jQuery("#ProductListGrid").getDataIDs();
alert(ids);
for (var i = 0; i < ids.length; i++) {
be = "<a href='#' style='height:25px;width:120px;' type='button' title='Slet' onclick=\"ff()\" >Slet</>";
jQuery("#ProductListGrid").jqGrid('setCell', ids[i],'edit','', { act: be });
}
//for (var i = 0; i < ids.length; i++) {
// jQuery("#ProductListGrid").setCell(i, 'edit', '<a href="#">edit</edit>');
//}
}
function ff()
{
alert("hi");
}
addlinks函数中的代码正在执行,但是该列中没有任何内容显示。我尝试使用自定义格式化,但无法显示自定义文本“编辑”,而链接点击也无法触发js方法。
formatter
吗?如果是的话,能否分享一下或提供demo? - GGGbeforeSelectRow
回调而不是onclick
属性来在单击链接/按钮时执行任何JavaScript代码... - OlegbeforeSelectRow
回调函数有第二个参数e
,它提供了有关所单击元素的信息。$(e.target).closest("td")
将是单击的单元格,$(e.target).closest("tr")
将是单击的行,$(e.target).closest("td").attr("id")
将是行ID等等。var iCol = $.jgrid.getCellIndex($(e.target).closest("td")[0]);
是单击单元格的列号。无论如何,我强烈建议您使用gridview:true
选项(请参见答案)以提高性能。使用addlinks
会使网格变慢。 - Oleg