放置在每一行中的按钮的 onclick 事件 jqgrid 没有触发?
Onclick event of button placed in each row jqgrid not firing?
情况:我的应用执行了一个AJAX请求,接收到的数据显示在下面的JQgrid中。 listData(data)
是在此 ajax 请求的 success
回调中调用的函数,
data
是从 request 收到的 JSON 数据。
buildJqGrid
是一个自定义函数,它在 table 和 div html 元素上调用 .jqgrid()
。
buttonFormatter
是我为名为 Action
的列定制的格式化程序
function listData(data) {
var containerName = 'datatablea3',
columnNames = ["Name",
"Email",
"Language",
"Office",
"alter email",
"Action"
],
columnModels = [{
name: 'Name',
index: 'Name',
width: '200px'
},{
name: 'Email',
index: 'Email',
width: '200px'
}, {
name: 'Language',
index: 'Language',
width: '200px'
}, {
name: 'Office',
index: 'Office',
width: '200px'
}, {
name: 'AlterEmail',
index: 'AlterEmail',
width: '200px'
}, {
name: 'action',
width: '200px',
formatter: buttonFormatter
}],
sortColumnName = 'Name',
caption = "Employees",
rowNum = 25,
pager = '#pager2a3',
grouping = false,
groupingView = {},
rowList = [25, 50, 100];
buildJqGrid(containerName, data, columnNames, columnModels,
sortColumnName, caption, rowNum, pager, grouping,
groupingView, rowList, true, 'asc');
}
问题:当这个jsp是运行时,数据在每条记录的jqgrid
with view button中成功显示,但是当我点击查看按钮没有任何反应!
我在控制台中检查它显示 "control in formatter" 但在单击查看按钮时它不显示 "control in click function"。
我也试过使用 editLink
格式化程序,但仍然有同样的错误,
谁能告诉我为什么我的按钮的 onclick
事件没有触发?
"click" 已经是一个函数,因此您重写它,不会触发任何东西。
试试这个
function buttonFormatter(cellvalue, options, rowObject)
{
console.log("control in button formatter");
return '<button onclick=\"clickFunction();\">View</button>';
}
function clickFunction()
{
console.log("control in click function");
alert("hello");
}
简单 fiddle : https://jsfiddle.net/virginieLGB/5e5LL5po/1/
像这样尝试,我也在我的项目中使用相同的功能(JQ 网格),尝试 HTML 输入类型而不是按钮,
使用您的代码时,点击事件已触发,但整个网页正在重新加载。
function buttonFormatter(cellvalue, options, rowObject) {
if (rowObject.Status != "Not Started") {
console.log("Zumbaa");
var edit = "<input class='Viewbtn' type='button' value='View' onclick=\"ShowMigrationProcess(" + cellvalue + ");\" />";
return edit;
}
return '';
}
情况:我的应用执行了一个AJAX请求,接收到的数据显示在下面的JQgrid中。 listData(data)
是在此 ajax 请求的 success
回调中调用的函数,
data
是从 request 收到的 JSON 数据。
buildJqGrid
是一个自定义函数,它在 table 和 div html 元素上调用 .jqgrid()
。
buttonFormatter
是我为名为 Action
function listData(data) {
var containerName = 'datatablea3',
columnNames = ["Name",
"Email",
"Language",
"Office",
"alter email",
"Action"
],
columnModels = [{
name: 'Name',
index: 'Name',
width: '200px'
},{
name: 'Email',
index: 'Email',
width: '200px'
}, {
name: 'Language',
index: 'Language',
width: '200px'
}, {
name: 'Office',
index: 'Office',
width: '200px'
}, {
name: 'AlterEmail',
index: 'AlterEmail',
width: '200px'
}, {
name: 'action',
width: '200px',
formatter: buttonFormatter
}],
sortColumnName = 'Name',
caption = "Employees",
rowNum = 25,
pager = '#pager2a3',
grouping = false,
groupingView = {},
rowList = [25, 50, 100];
buildJqGrid(containerName, data, columnNames, columnModels,
sortColumnName, caption, rowNum, pager, grouping,
groupingView, rowList, true, 'asc');
}
问题:当这个jsp是运行时,数据在每条记录的jqgrid
with view button中成功显示,但是当我点击查看按钮没有任何反应!
我在控制台中检查它显示 "control in formatter" 但在单击查看按钮时它不显示 "control in click function"。
我也试过使用 editLink
格式化程序,但仍然有同样的错误,
谁能告诉我为什么我的按钮的 onclick
事件没有触发?
"click" 已经是一个函数,因此您重写它,不会触发任何东西。
试试这个
function buttonFormatter(cellvalue, options, rowObject)
{
console.log("control in button formatter");
return '<button onclick=\"clickFunction();\">View</button>';
}
function clickFunction()
{
console.log("control in click function");
alert("hello");
}
简单 fiddle : https://jsfiddle.net/virginieLGB/5e5LL5po/1/
像这样尝试,我也在我的项目中使用相同的功能(JQ 网格),尝试 HTML 输入类型而不是按钮,
使用您的代码时,点击事件已触发,但整个网页正在重新加载。
function buttonFormatter(cellvalue, options, rowObject) {
if (rowObject.Status != "Not Started") {
console.log("Zumbaa");
var edit = "<input class='Viewbtn' type='button' value='View' onclick=\"ShowMigrationProcess(" + cellvalue + ");\" />";
return edit;
}
return '';
}