onclick事件未在添加到jqGrid的每个子网格单元格的按钮上触发

时间:2012-10-12 10:34:42

标签: jqgrid

我在jqGrid的子网格的每一行都添加了一个按钮。我只是遵循了inline_editing的文档。

我想点击按钮调用服务器端代码。但是当我看到萤火虫时,它没有显示点击按钮时发出的请求(没有显示任何网址请求)。

以下是我的代码,

subGridRowExpanded: function (subgrid_id, row_id) {
 var subgrid_table_id, pager_id;
 subgrid_table_id = subgrid_id + "_t";
 pager_id = "p_" + subgrid_table_id;
 $("#" + subgrid_id)
     .html("<table id='" + subgrid_table_id + "' class='scroll'></table><div id='" + pager_id + "' class='scroll'></div>");
 $mysubgrid = jQuery("#" + subgrid_table_id);
 $mysubgrid.jqGrid({
     url: "serversub.php",
     datatype: "json",
     colNames: ['Product Id', 'Product Name', 'status', ''],
     width: 700,
     colModel: [{
         name: 'productid',
         index: 'productid',
         width: 55
     }, {
         name: 'productname',
         index: 'productname',
         width: 90
     }, {
         name: 'status',
         index: 'status',
         width: 80,
         search: false
     }, {
         name: 'link',
         index: 'link',
         width: 80,
         search: false
     }],
     rowNum: 20,
     sortname: 'num',
     sortorder: "asc",
     gridComplete: function () {
         var ids = $mysubgrid.jqGrid('getDataIDs');
         for (var i = 0; i < ids.length; i++) {
             var cl = ids[i];

           se = "<input style='height:22px;width:20px;'
  type='button' value='Update' onclick=\"$mysubgrid.saveRow('" + cl + "');\" />";
             $mysubgrid.jqGrid('setRowData', ids[i], {
                 link: se
             });
         }
     },
     editurl: "saveserversub.php"
 });

我在这里错过了什么吗?

由于

1 个答案:

答案 0 :(得分:0)

您在onclick中调用的功能仅包含全局变量。您无法使用本地$mysubgrid变量。

我建议您在custom formatter内创建所需的按钮,并使用(与所有其他网格一样)选项gridview: true。它将提高网格的性能。

此外,我认为您不需要在网格列中插入的按钮上设置任何onclick。如果click事件触发,并且click bubbling没有事件处理程序。所以你可以使用onCellSelect回调。如果您需要拥有所单击按钮的原始DOM对象,则可以在e.target中找到它。