从jqGrid的gridComplete事件期间创建的按钮调用函数?

时间:2010-05-05 14:21:15

标签: jquery jqgrid

我正在尝试在gridComplete事件期间创建的按钮的onclick事件中调用一个函数.Loads OK ...这里是第一行中按钮的渲染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 个答案:

答案 0 :(得分:2)

我会更改你的网格完整功能,这样它就会给插入一个说“删除”的类,然后在我的文档就绪函数中为该类选择器设置一个实时点击事件。

类似这样的事情

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 :(得分:1)

您可以将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,但你需要做的是非常简单。


你能发贴一些标记吗?很难说出如何按ID选择行而不看它。