2010-12-06 82 views
3

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

<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'] 
    }); 

删除操作会导致width属性消失。这是为什么发生?

网格细胞得到显示的是这样的...

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

如果删除除最后一行的任何行,变成这样的细胞....

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

宽度属性被删除。我在这里错过了什么?

回答

16

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

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

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

还有一点小话。请看formatter:'actions'custom formatter,它非常易于使用,但允许您创建HTML代码片段作为单元格内容。所有的功能都可以作为'删除'coulmn的交互字符串。

1

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; 
      } 
     } 
     } 
    } 
    } 
} 
通话