2010-12-06 3 views
3

Я пытаюсь использовать функцию tabletogrid в jqgrid plugin. Моя проблема в том, что если я удалю строку в таблице, тогда атрибут 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 вы можете использовать любые methods jqGrid. Стандартный способ удаления строки в jqGrid - это метод delRowData.

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

Для того, чтобы высота сетки автоматически регулируемой вы можете добавить опцию height:'100%'. Еще одна настройка для определения столбца title:false для всех столбцов в colModel, которая не должна создаваться атрибутом title, также может быть полезна для вас.

Еще один маленький примечание. Посмотрите на formatter:'actions' или custom formatter, который очень прост в использовании, но позволяет создавать фрагмент кода HTML в качестве содержимого ячеек. Все функции могут быть интересны для «удаления» coulmn.

1

gridPreSeleccion: Сетка идентификатор

эта сетка MultiSelect верно вызов с 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; 
      } 
     } 
     } 
    } 
    } 
} 
Смежные вопросы