放置在每一行中的按钮的 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 '';
}