【问题标题】:jqGrid TableToGrid delete a rowjqGrid TableToGrid 删除一行
【发布时间】:2012-11-23 08:06:40
【问题描述】:

我正在尝试在jqgrid plugin 中使用 tabletogrid 函数。我的问题是,如果我删除表格中的一行,那么表格单元格的宽度属性就会消失。但是如果最后一行被删除,那么删除操作会按预期发生。 例如,这是我的 html 表 -

<table id="item_table">
    <thead>
        <tr>
            <th width="60">Date</th>
            <th width="15">Icon</th>
            <th width="80">Shop</th>
            <th width="15">Delete</th>
        </tr>
    <thead>
    <tbody>
        <tr>
            <td width="60" class="col_date">
                <div class="date"></div>
            </td>
            <td width="15" class="col_icon">
                <div class="icon"></div>
            </td>
            <td width="80" class="col_shop">
                <div class="shop"></div>
            </td>
            <td width="25" class="col_delete">
                <div class="delete"></div>
            </td>
        </tr>
    </tbody>
</table>

然后我使用 ajax 代码将内容添加到表中。之后,这是我的 jqgrid 设置。

    jQuery.extend(jQuery.jgrid.defaults, {
        caption: "Shops",
        autowidth: true,
        height: 24,
        hidegrid: false,
        onCellSelect: function(rowid, index, contents, target) {
            if (index == 3) {
                $('#item_table tr:eq(' + rowid + ')').remove();
            }
        },
        colModel:[
            { name: 'date', index: 'date', width: 0, resizable: false },
            { name: 'icon', index: 'icon', width: 0, resizable: false },
            { name: 'shop', index: 'shop', width: 0, resizable: false },
            { name: 'delete', index: 'delete', width: 0, resizable: false }
        ]
    });
    tableToGrid("#item_table", {
        colNames: ['Date', '', 'Shop', 'Delete']
    });

删除操作导致宽度属性消失。为什么会这样?

网格中的单元格会像这样显示...

<TD style="WIDTH: 80px" title="" role=gridcell><DIV class=shop></DIV></TD>

如果删除除最后一行之外的任何一行,单元格就会变成这样......

<TD title="" role=gridcell><DIV class=shop></DIV></TD>

Width 属性被移除。我在这里错过了什么?

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    将表格转换为 jqGrid 后,您可以使用 jqGrid 的任何methods。在 jqGrid 中删除一行的标准方法是 delRowData 方法。

    $('#item_table').jqGrid('delRowData',rowid);
    

    要使网格的高度自动调整,您可以添加选项height:'100%'。对colModel 中的所有列的列定义title:false 的另一项设置(不应该创建title 属性)对您也有帮助。

    还有一点小评论。查看formatter:'actions'custom formatter,它们非常易于使用,但允许您创建HTML 代码片段作为单元格内容。对于“删除”列,所有功能都可能很有趣。

    【讨论】:

      【解决方案2】:

      gridPreSeleccion: id 网格

      这个网格是多选真 使用事件 jquery 调用

      //Funcion que elimina los multiselect de un jqgrid seleccionados
      function eliminarSeleccionados() {
         var idsContribuyentesSelect = jQuery("#gridPreSeleccion").jqGrid('getGridParam', 'selarrrow');
        if(idsContribuyentesSelect.length == 0) {
          jQuery.MessageAlertSath("Es necesario seleccionar una fila.")
        } else {
          var ids = jQuery("#gridPreSeleccion").jqGrid('getDataIDs');
          var a = ids.length;
          var j = 0;
          while(j == 0) {
            if(jQuery("#gridPreSeleccion").jqGrid('getGridParam', 'selarrrow').length <= 0) {
              j = 1;
            } else {
              for(var i = 0; i < a; i++) {
                if(idsContribuyentesSelect[0] == ids[i]) {
                  jQuery('#gridPreSeleccion').delRowData(ids[i]);
                  break;
                }
              }
            }
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        • 2011-11-03
        • 2013-08-22
        相关资源
        最近更新 更多