我在我的表单上使用jqgrid并且我正在创建列删除并希望在javascript函数中发送对象,代码如下
{
name: "action",
align: "center",
sortable: false,
title: false,
fixed: true,
search: false,
formatter: function (cellValue, options, rowObject) {
debugger;
var markup = "<a title=\"%ToolTip%\" href=%Href%;>%Text%</a>";
var replacements = {
"%Text%": "<i class='fa fa-trash' style='color:black'></i>",
"%ToolTip%": UserRoles.messages && UserRoles.messages.ClickHereToDelete
? UserRoles.messages.ClickHereToDelete : "",
"%Href%": "javascript:UserRoles.deleteUserRoles(" + rowObject + ")"
};
markup = markup.replace(/%\w+%/g, function (all) {
return replacements[all];
});
return markup;
}
}
我想通过这行
在函数deleteUserRole中发送对象"%Href%": "javascript:UserRoles.deleteUserRoles(" + rowObject + ")"
但是它给了我输出
<a title="" href="javascript:UserRoles.deleteUserRoles([object" object]);=""><i class="fa fa-trash" style="color:black"></i></a>
任何人都可以帮助我
答案 0 :(得分:1)
大多数人不需要创建这样的自定义格式化程序,只需使用formatter: "action"
就可以使用相应的参数。
重要的是要理解格式化程序的目标是提供HTML片段,该片段将放置在列的单元格(<td>
)中。 rowObject
通常是行的输入数据,其格式取决于许多因素。
您可能需要使用options.rowId
作为UserRoles.deleteUserRoles
函数的参数。在函数内部,您可以使用getRowData
根据rowid获取数据。
我建议你阅读the answer,所有旧答案都引用了答案。它表明,可以使用自定义格式化程序**的地方"<a href='#'><i class='fa fa-trash' style='color:black'></i></a>"
,而不使用任何javascript:UserRoles.deleteUserRoles(...)
片段。而不是那个可以实现beforeSelectRow
回调测试用户点击的列。如果用户点击了<a>
列的"action"
,则可以执行一些自定义操作。这种方式更有效,因为不需要将全局函数绑定到列的每个<a>
元素。可以通过删除<a>
并仅在列中保留<i class='fa fa-trash' style='color:black'></i>
来简化列的内容。 beforeSelectRow
回调的代码将是相同的。