0

您好我有以下 jqgrid 列,单击批准按钮我需要通过 ajax 向 servlet 发送一个 ID。

colNames: ['EmployeeID','Name', 'From Date', 'To Date', 'Reason', ''],
    colModel: [
           {name:'employeeID', index:'emp_Id', width:55 },
           {name: 'employeeName', index:'name', width:90},
           {name: 'leave_from', index:'from_date', width: 90},
           {name: 'leave_to', index:'to_date', width: 90},
           {name: 'reason', index:'status', width: 90},
           {name: 'option', index: 'option', width:150, sortable:false},
               ],

自定义按钮代码

    loadComplete: function(){
        //alert('loading Complete');
        var id = jQuery('#jqqGrid').getDataIDs();
        for(var i=0; i<id.length; i++){
            //var c1 = id[i];
            approve = "<input style='height:22px;width:60px;' type='button' onclick= \"approveLeave();\" Value='Approve'/><br />";
            reject = "<input style='height:22px;width:60px;' type='button' onclick= \"rejectLeave();\" Value='Reject'/><br />";
            jQuery('#jqqGrid').jqGrid('setRowData',id[i], {option:approve+reject});
        }

我可以看到网格中的按钮,我的问题是通过 onclick 函数发送 ID,

示例 Json 对象

{"currentPage":1,"totalPages":1,"totalRecords":1,"rows":[{"Id":1016,"cell":{"leave_from":"19/08/2013","leave_to":"23/08/2013","dateofLeaveRequest":"8/18/2013","reason":"Vaccation ","leave_id":1016,"id":0,"employeeID":1029,"employeeName":"Arun Kumar"}}]}

我想通过我的 onclick 函数传递 ID。不知道如何实现它。非常感谢任何帮助。

谢谢

4

1 回答 1

2

首先,重要的是要了解 jqGrid总是分配代表网格行的元素的id属性。<tr>如果你使用"Id":1016而不是"id":1016你应该通知 jqGrid 为 ids 使用另一个名称。您可以包括jsonReader: {id: "Id"}执行此操作。只是因为 jqGrid 没有在输入数据中找到所需的信息,它才会将 1、2、3 等整数分配为 id 值。

下一个问题setRowDataloadComplete. 我建议您阅读我试图从性能角度解释为什么该方法无效的旧答案。使用自定义格式化程序来构造列的内容会好得多option。如果您需要定义 jqGrid 在需要构建<td>(列的单元格option)的内容时调用的回调函数。回调有四个参数cellvalue, options, rowObject, action。第二个参数options是对象,它的rowId属性 ( options.rowId) 为您提供行的 id。第三个参数rowObject表示该行的输入数据。我认为这会像{leave_from: "19/08/2013", leave_to: "23/08/2013", dateofLeaveRequest: "8/18/2013", reason: "Vaccation", leave_id: 1016, id: 0, employeeID: 1029, employeeName: "Arun Kumar"}你的情况一样。通过这种方式,您将能够根据行的输入数据的任何值构造单元格内容。所以rowObject.leave_idoroptions.rowId会给你你需要的信息。

如果您对数据进行一些编辑,使用'onclick=\"approveLeave(' + options.rowId + ')'可能会有一些缺点。在这种情况下onclick可以使用旧的id 值。更好的将被使用approveLeave(this)。的值是被点击元素this的 DOM 。<input>因此,您可以使用$(elem).closest("tr").attr("id")(elem可能是的第一个参数approveLeave) 来获取 rowid。

更好的方法是根本不分配任何onclick东西。可以在整体上设置一个 代表网格click的事件句柄。<table>jqGrid 这样做。因此,可以只使用beforeSelectRowonSelectRow处理click网格内的任何按钮。看答案这个还是这个

于 2013-08-18T18:35:56.293 回答