Как выполнить вызов ajax и перенаправить на другую страницу, если щелкнуть в свободной колонке jqgrid

Я ищу способ выполнить ajax-вызов «Добавить в корзину», чтобы передать код продукта (идентификатор строки) и количество из других столбцов в выбранной строке и перенаправить на страницу корзины, если щелкнуть в столбце jqgrid.

Согласно https://github.com/free-jqgrid/jqGrid/wiki/improvement-of-formatter:-"showlink"

Форматировщик showlink улучшен, поэтому я попытался его использовать.

я пробовал колмодел

{"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
    });
}

addToCartOnClick не вызывается в jree jqgrid.

В jqgrid 4.6 форматировщик динамической ссылки

onClick=addToCartOnClick 

работал, как описано в Как передавать данные в URL-адрес из строки jqgrid, если гиперссылка нажата

В бесплатной jqgrid addToCartOnClick также не вызывается из модуля форматирования dynamicLink.

Как вызвать метод и получить значения столбца из щелкнутой строки в бесплатной jqgrid?


person Andrus    schedule 04.04.2015    source источник


Ответы (1)


showAction можно использовать для установки только части URL. Если вы хотите использовать эту опцию, вам нужно использовать префикс javascript: (см. ответ), чтобы запустить addToCartOnClick, который должен быть определен в качестве глобальной функции.

Лучше было бы использовать новую опцию onClick в formatoptions из formatter: "showlink". Я сделал соответствующие изменения кода бесплатного jqGrid непосредственно после прочтения вашего вопрос. Вам следует обновить исходники, которые вы используете, с 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
        }
    }}
person Oleg    schedule 05.04.2015