Slickgrid отображается до тех пор, пока ширина некоторых его столбцов не будет изменена - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь показать содержимое таблицы в скользящей сетке, которая отображается в диалоговом окне. Он работает неправильно: когда я открываю диалоговое окно, сетка показывает только заголовки сетки и элементы управления нумерацией страниц:

enter image description here

Я могу изменить страницу, и сетка не отображается. Я могу только сделать его рендеринг, отрегулировав ширину любого столбца, я не знаю, какое событие вызывает корректировку столбца, и я хотел бы вызвать его вручную:

enter image description here

Div, который я использую в качестве контейнера сетки и который я открываю в диалоговом окне:

<div id="dlgBitacoraCnfGlobal" style="display:none;">
    <div id="divContenedor" style="width: 100%; height: 95%; overflow: auto;">
    <div style="margin-top: 10px; clear: both;">
        <div id="divBotones" class="toolBarBox" style="padding-top: 5px; float: left;">
            <table>
                <tr>
                    <td><s:message code="general.formatoFecha" />:</td>
                    <td>
                        <label for="fechaInicial"><s:message code="general.fechaInicial.desde" />&nbsp;</label>
                        <input type="text" id="fechaInicial" size="10" maxlength="10"/>&nbsp;&nbsp;
                        <label for="fechaFinal"><s:message code="general.fechaFinal.a"/>&nbsp;</label>
                        <input type="text" id="fechaFinal" size="10" maxlength="10"/>
                    </td>
                </tr>
            </table>
        </div>
        <span id="toolbar" class="ui-widget-header ui-corner-all">
            <aclutil:secBtn pantalla="${nombrePantalla}" domId="btnRefrescar" seguro="false" mensaje="${refres}" />
        </span>
        <div id="divPagerBitacora" style="margin: 5px; clear: both;"></div>
        <div id="divGridBitacora" style="width: 95%; height: 420px; margin: 10px; margin-top: 5px; "></div>
    </div>
</div>
</div>

Функции JavaScript, с помощью которых я создаю и управляю сеткой:

function initComponents() {
    $('#bitacora', $ctxt).button({
        icons : {
            primary : "ui-icon-clock"
        }
    }).click(function() {
        buscarBitacora();
    });

    initBitacora($ctxt);
}

function consultarBitacoraTab() {
    cargaInicial();
}

function buscarBitacora() {
    var $dialogoBitacora = $("#dlgBitacoraCnfGlobal", $ctxt);
    $dialogoBitacora.dialog({
        autoOpen : false,
        modal : true,
        height : 700,
        width : 1100,
        title : "Bitacora de cambios",
        open : function(event, ui) {
            consultarBitacoraTab();
        },
        close : function(event, ui) {
        },
        buttons : [ {
            text : "Aceptar",
            click : function() {
                var $this = $(this);
                $this.dialog("close");
            }
        } ]
    });
    $dialogoBitacora.dialog("open");
}

function initBitacora($ctxt) {
    $context = $ctxt;
    self = this;
    _fechaInicial = $("#fechaInicial", $ctxt);
    $(_fechaInicial).attr("id", $(_fechaInicial).attr("id") + "_" + _id);
    _fechaFinal = $("#fechaFinal", $ctxt);
    $(_fechaFinal).attr("id", $(_fechaFinal).attr("id") + "_" + _id);
    crearDatePicker();
    var preparar = function () {
        $(":button", $context).button();
        $divGridBitacora = $('#divGridBitacora', $ctxt);
        $divPagerBitacora= $('#divPagerBitacora', $ctxt);
        $btnRefrescar = $("#btnRefrescar", $context);
        $btnRefrescar.click(cargaInicial);
    };

    return $.when(preparar()).done(function () {
        crearGridListado();
        cargaInicial();
    });

    function crearGridListado() {
        var columnas = [];
        var opciones = {
            editable: false,
            enableCellNavigation: true,
            asyncEditorLoading: true,
            autoEdit: false,
            enableAddRow: false,
            forceFitColumns: false,
            enableRowReordering: true,
            rowHeight: 25,
            gridName: "bitacora_configuracion_global",
            enableSearchStringMap: true,
            sortable: true
        };
        fnDescribirGrid({
            url: "/describir/nombrePojo/BitacoraConfiguracionVO/",
            columnas: columnas,
            columnasOmitir: [""],
            callback: function () {
                rgListado = new RemoteGridFactory({
                    divGrid: $divGridBitacora,
                    divPager: $divPagerBitacora,
                    options: opciones,
                    columns: columnas,
                    pagingOptions: {
                        pageSize: tamanoPagina,
                        pagenum: 0
                    },
                    onRunFilter: cargaInicial,
                    onSort: cargaInicial,
                    listarPag:cargarBitacora,
                    onDblClick: function (e, row, cell) {
                        var item = dataViewBitacora.rows[row];
                        creaMensaje({mensaje: item.valor, cssClass: "cell-click",titulo: "Bitacora de cambios", contexto: $ctxt});
                    },
                    onSelectedRowsChanged: function () {
                        var rows = gridBitacora.getSelectedRows();
                        itemSeleccionado = dataViewBitacora.rows[rows[0]];
                    }
                });

                gridBitacora = rgListado.getGrid();
                dataViewBitacora = rgListado.getDataView();
                mapaDeBusqueda = rgListado.getSearchMap();
                paginadorListado = rgListado.getPager();
            }
        });
    }
}


function cargaInicial() {
    var datosConsultados = [];
    datosPagina0 = consultarBitacora(paginaInicial, function(resultado) {
        datosConsultados = resultado.pageItems[1];
        totalNumeroListado = resultado.rowsCount;
    });
    $.when(datosPagina0).done(function() {
        $('#divBotones', $context).unblock();
        if (datosConsultados.length === 0) {
            dataViewBitacora.setItems([], paginaInicial);
            return;
        }
        dataViewBitacora.setItems(datosConsultados, totalNumeroListado);
        gridBitacora.render();
    });
}

function cargarBitacora(pagina) {
    paginadorListado.lock();
    paginadorListado.updateButtons();
    consultarBitacora(pagina, function(resultado) {
        dataViewBitacora.addItems([], pagina);
        dataViewBitacora.addItems(resultado.pageItems[1], pagina);
        paginadorListado.unlock();
        paginadorListado.updateButtons();
        $('#divBotones', $context).unblock();
    });
}

function consultarBitacora(pagina, callback) {
    $('#divBotones', $context).block();
    if (!pagina)
        pagina = paginaInicial;
    var parametrosBusqueda = {
        '@class' : JacksonHelper.HASHMAP,
        filtros : mapaDeBusqueda,
        orden : rgListado.getOrderMap(),
        first : pagina * tamanoPagina,
        page : pagina,
        max : tamanoPagina,
        cadenaBuscada : _cadenaBuscada
    };
    return $.postJSON('/bitacoraHistory/search?fInicial='
            + _fechaInicial.datepicker("getDate").getTime() + "&fFinal="
            + _fechaFinal.datepicker("getDate").getTime(), parametrosBusqueda,
            callback);
}

Моя главная цель - понять, почему создается сетка, пока я не отрегулирую ширину некоторых ее столбцов, если я могу применить «патч», как триггер того же события, которое вызывается, когда я делаю настройку столбца, но корректирую вручную эта ошибка. Я внимателен к любому предложению, чтобы понять и решить проблему

1 Ответ

0 голосов
/ 27 марта 2019

Просто проверяю ... используете ли вы репо 6pac (https://github.com/6pac/SlickGrid)? Оригинальное репо MLeibman сейчас не поддерживается и довольно старое. Вы можете получить это поведение, например, с репозиторием MLeibman, если div скрыткогда запускается init. Репо 6pac содержит множество исправлений и улучшений, а также работу с новыми версиями jQuery.

...