如果在免费的 jqgrid 列中单击,如何执行 ajax 调用并重定向到其他页面

How to perform ajax call and redirect to other page if clicked in free jqgrid column

我正在寻找一种方法来执行 "Add to cart" ajax 调用以传递产品代码(行 ID)和点击行中其他列的数量,如果在 jqgrid 中点击则重定向到购物车页面列。

根据 https://github.com/free-jqgrid/jqGrid/wiki/improvement-of-formatter:-"showlink"

showlink 格式化程序得到了改进,所以我尝试使用它。

我试过 colmodel

{"label":"Add to cart",
"name":"Addtocrt_addtocrt","search":false,"sortable":false,
"viewable":false,"formatter":"showlink","formatoptions":{"showAction":addToCartOnClick
}}

和方法

function addToCartOnClick(rowId, iRow, iCol, cellValue, e) {
    var 
     $quantity = $('#' + $.jgrid.jqID(rowId) + '>td:nth-child(' + (iCol + 1) + ')'),
     quantityVal;
    if (iCol < 0) {
        quantityVal = 1;
    } else
        if ($quantity.find('>input').length === 0) {
            quantityVal = $quantity.text();
        }
        else {
            quantityVal = $quantity.find('>input').val();
        }
    window.location = 'Store/AddToCart?' + $.param({
        id: rowId,
        quantity: quantityVal
    });
}

jree jqgrid 中没有调用 addToCartOnClick。

在 jqgrid 4.6 动态链接格式化程序中

onClick=addToCartOnClick 

按照How to pass data to url from jqgrid row if hyperlink is clicked

中的描述工作

在免费的 jqgrid 中,addToCartOnClick 也不会从 dynamicLink 格式化程序中调用。

如何在免费的 jqgrid 中调用方法并从单击的行中获取列值?

showAction只能用来设置URL的部分。如果你想使用该选项,那么你必须使用 javascript: 前缀(参见 the answer)来启动 addToCartOnClick,它被定义为 global功能。

最好在 formatter: "showlink"formatoptions 中使用新选项 onClick。阅读您的问题后,我直接制作了免费 jqGrid 的代码 the corresponding changes。您应该从 GitHub 刷新您使用的来源。现在您可以使用

{name: "Addtocrt_addtocrt", label: "Add to cart",
    search: false, sortable: false, viewable: false,
    formatter: "showlink",
    formatoptions: {
        onClick: function (options) {
            // object options contains properties, which could be helpful
            //    iCol - index of the column in colModel
            //    iRow - index of the row
            //    rowid
            //    cm - element of colModel
            //    cmName - the same as cm.name
            //    cellValue: the text inside of `<a>`
            //    a - DOM element of clicked <a>
            //    event - Event object of the click event
            location.href = "http://www.google.com/";
            return false; // it's important to suppress the default a action
        }
    }}