Вызов функции из кнопки, созданной во время события gridComplete jqGrid? - PullRequest
1 голос
/ 05 мая 2010

Я пытаюсь вызвать функцию в событии onclick кнопки, которая создается во время события gridComplete. Загрузка ОК ... вот как выглядит отрисованный HTML-код для кнопки в первой строке

<input type="button" onclick="deleteRow(9197113);" value="Delete" style="height: 22px; width: 70px;">

но когда я нажимаю кнопку ... функция не вызывается и firebug говорит ...

deleteRow не определен

Как я могу вызвать функцию, вместо того, чтобы иметь встроенный javascript ,,, (который работает BTW, но я хотел бы вызвать функцию для удобства чтения и поддержки). Я включил рабочий встроенный javascript ... он закомментирован в следующем фрагменте ...

Ниже приведена сетка Полная часть настроек jqGrid.

jQuery("#list").jqGrid({

   ........................

    gridComplete: function() {
        var ids = jQuery("#list").jqGrid('getDataIDs');
        for (var i = 0; i < ids.length; i++) {
            var cl = ids[i];
            de = "<input style='height:22px;width:70px;' type='button' value='Delete' onclick='deleteRow('" + cl + "' );' />";   
            //de = "<input style='height:22px;width:70px;' type='button' value='Delete' onclick=\"jQuery('#list').jqGrid('delGridRow', '" + cl + "', {msg: 'Delete this entry?'});\" />"; 
            jQuery("#list").jqGrid('setRowData', ids[i], { Delete: de });
        }
    }

   ........................

 });

Вот функция deleteRow ()…

function deleteRow() {
    alert("hit delete button");
    // jQuery("#grid_id").jqGrid('delGridRow', row_id_s,options );
}

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Я бы изменил вашу функцию завершения сетки, чтобы она придала классу «удалить», а затем в моей функции готовности документа установил событие живого щелчка для этого селектора класса.

как то так

gridComplete: function() {
    var ids = jQuery("#list").jqGrid('getDataIDs');
    for (var i = 0; i < ids.length; i++) {
        var cl = ids[i];
        de = '<input style="height:22px;width:70px;" type="button" class="delete" value="Delete" />';
        $("#list").jqGrid('setRowData', ids[i], { Delete: de });
    }
}

$('#list .delete').live('click',function(){
    var id = $(this).parent().attr('id');
});
1 голос
/ 05 мая 2010

Вы можете определить deleteRow как пользовательскую функцию jQuery, а затем вызвать ее для выбранных элементов.

$.fn.deleteRow = function() { 
    row_id = $(this).attr('id');
    return $("#grid_id").jqGrid('delGridRow', row_id);
}

Назовите это так:

$("#grid_id button[value=Delete]").click( function() {
    $(this).parents('.row_class').deleteRow();
});

Я полагаю, что это должно быть более сложным - я не знаком с jqGrid, но что вам нужно сделать, это довольно просто.


Не могли бы вы опубликовать некоторую разметку? Трудно сказать, как выбрать строку по идентификатору, не видя ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...