jqGrid TableToGrid удалить строку - PullRequest
3 голосов
/ 06 декабря 2010

Я пытаюсь использовать функцию tabletogrid в плагине jqgrid .Моя проблема заключается в том, что если я удаляю строку в таблице, то атрибут ширины ячеек таблицы просто исчезает.Но если последняя строка удаляется, то операция удаления происходит, как и ожидалось.Например, вот моя 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 удаляется.Что мне здесь не хватает?

Ответы [ 2 ]

16 голосов
/ 06 декабря 2010

После преобразования таблицы в jqGrid вы можете использовать любые методы jqGrid.Стандартный способ удаления строки в jqGrid - это метод delRowData.

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

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

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

1 голос
/ 22 ноября 2012

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

эта сетка является множественным выбором true вызов с событием 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;
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...