Нужно ли определять фиксированную ширину для каждого столбца или она может быть автоматически рассчитана?

Мне интересно, есть ли какая-либо конфигурация, и мне ее не хватает, когда столбцы автоматически соответствуют ширине сетки в jQgrid или мне нужно определить фиксированную ширину (что не так круто) для каждого из них. Я попробовал следующее без успеха:

$(function () {
    "use strict";
    var $grid = $("#list");

    $grid.jqGrid({
        url: '/ajax/plans_to_forms/get_all',
        datatype: "json",
        colNames: ["Actions", "Form #", "Form", "Plan", "Class", "Drug"],
        colModel: [
            {name: "act", template: "actions"},
            {name: "FormId", align: 'center', fixed: true, frozen: true, resizable: false, width: 50},
            {name: "FormName"},
            {name: "PlanName"},
            {name: "DrugGroupName"},
            {name: "DrugName"}
        ],
        cmTemplate: {autoResizable: true, editable: true},
        iconSet: "fontAwesome",
        rowNum: 25,
        guiStyle: "bootstrap",
        autoResizing: {compact: true},
        rowList: [25, 50, 100, "10000:All"],
        viewrecords: true,
        autoencode: true,
        sortable: true,
        pager: true,
        toppager: true,
        hoverrows: true,
        multiselect: true,
        multiPageSelection: true,
        rownumbers: true,
        sortname: "Id",
        sortorder: "desc",
        loadonce: true,
        autowidth: true,
        shrinkToFit: false
    }).jqGrid("navGrid", {
        edit: false,
        add: false,
        del: true,
        search: false,
        refresh: true
    }).jqGrid("filterToolbar").jqGrid("gridResize");
});

Результат выглядит так:

введите описание изображения здесь

1 ответ

Решение

Free jqGrid имеет функцию, начиная с первой выпущенной версии (4.8). Я описал эту функцию в статье вики. Вам нужно в основном добавить autoresizeOnLoad: true вариант к сетке, чтобы решить вашу проблему.

Проблема в том, что существует множество небольших интерпретаций поведения "авторазмера". Ты можешь позвонить autoResizeAllColumns метод внутри jqGridAfterLoadComplete Событие для реализации некоторой вариации стандартного поведения. Например, в ответе и демонстрационной версии https://jsfiddle.net/OlegKi/dk2qwbcs/6/) показано, как использовать "автоматическое изменение размера", чтобы уменьшить размер сетки до минимальной ширины без сжатия и добавить горизонтальную полосу прокрутки в сетку. в случае небольшого внешнего окна.

Другое свойство: resetWidthOrg: true из autoResizing опция может быть полезна в случае использования мерцания. Смотрите демо https://jsfiddle.net/OlegKi/ejpn9/149/ где свойства

autoresizeOnLoad: true,
autowidth: true,
autoResizing: {
    compact: true,
    resetWidthOrg: true
},

используются.

Другие вопросы по тегам