Jqgrid — таблица не отображает отзывчивое поведение

Привет, у меня есть следующий код, который отображает таблицу с помощью jqgrid. Но я заметил, что ни один из jqGrid не отвечает.

Как я могу сделать существующий jqGrid адаптивным для планшетов и смартфонов

ОБНОВИТЬ

Я обновил свой код следующим

 $(window).on("resize", function () {
    var newWidth = $("#loanGrid").closest(".ui-jqgrid").parent().width();
   $("#loanGrid").jqGrid("setGridWidth", newWidth, true);
});

Отзывчивость работает, но не полностью.

Вот код ниже и скрипка здесь HTML

<div class="container-fluid">
   <div class="row">
      <div class="col-md-11">
         <h3 class="subheader"> Sample Info </h4>
         <div class="redmond">
            <table id="output"></table>
         </div>
     </div>
  </div>     
</div>

jqGrid JavaScript

$("#output").jqGrid({
    url: jsonData,
    mtype: "GET",
    datatype: "json",
    /*  postData: {
          json: JSON.stringify(data)
      },
      */
    colModel: [
      /**    { name: 'ClientID', label:'ClientID',width: 80, key: true },****/
      {
        name: 'Symbol',
        label: 'Symbol',
        align: 'left',
        width: 65
      }, {
        name: 'Description',
        label: 'Description',
        align: 'left',
        width: 165
      }, {
        name: 'ShareQuantity',
        label: 'ShareQuantity',
        align: 'right',
        width: "85",
        formatter: 'currency',
        formatoptions: {
          prefix: " ",
          suffix: " "
        }
      }, {
        name: 'SharePrice',
        label: 'Share Price',
        align: 'right',
        width: 100,
        template: "number",
        formatoptions: {
          prefix: " $",
          decimalPlaces: 4
        }
      },
      /*{ label: 'Value1', 
                  name: 'Value1', 
                  width: 80, 
                  sorttype: 'number', 
                  formatter: 'number',
                  align: 'right'
              }, */
      {
        name: 'TotalValue',
        label: 'Total Value',
        width: 160,
        sorttype: 'number',
        align: "right",
        formatter: 'currency',
        formatoptions: {
          prefix: " $",
          suffix: " "
        }
      }, {
        name: 'LTVRatio',
        label: 'LTV Ratio',
        width: 70,
        sorttype: 'number',
        align: "right",
        formatter: 'percentage',
        formatoptions: {
          prefix: " ",
          suffix: " "
        }
      }, {
        name: 'LTVCategory',
        label: 'LTV Category',
        width: 120,
        width: 165
      },

      {
        name: 'MaxLoanAmt',
        label: 'MaxLoanAmount',
        width: 165,
        sorttype: 'number',
        align: "right",
        formatter: 'currency',
        formatoptions: {
          prefix: " $",
          suffix: " "
        }
      }

    ],
    additionalProperties: ["Num1"],
    /*beforeProcessing: function (data) {
        var item, i, n = data.length;
        for (i = 0; i < n; i++) {
            item = data[i];
            item.Quantity = parseFloat($.trim(item.Quantity).replace(",", ""));
            item.LTVRatio = parseFloat($.trim(item.LTVRatio *10000).replace(",", ""));
            item.Value = parseFloat($.trim(item.Value).replace(",", ""));
            item.Num1 = parseInt($.trim(item.Num1).replace(",", ""), 10);
            item.Num2 = parseInt($.trim(item.Num2).replace(",", ""), 10);
        }
    }, */
    iconSet: "fontAwesome",
    loadonce: true,
    rownumbers: true,
    cmTemplate: {
      autoResizable: true,
      editable: true
    },
    autoResizing: {
      compact: true
    },
    forceClientSorting: true,
    sortname: "Symbol",
    footerrow: true,
    caption: "<b>Collateral Value</b> <span class='pull-right' style='margin-right:20px;'>Valuation as of: " + mmddyyyy + "</span>",


    loadComplete: function() {
      var $self = $(this),
        sum = $self.jqGrid("getCol", "Price", false, "sum"),
        sum1 = $self.jqGrid("getCol", "MaxLoanAmt", false, "sum");
      //ltvratio =  $self.jqGrid("getCol","LTVRatio:addas", "Aved Loan Amount");
      $self.jqGrid("footerData", "set", {
        LTVCategory: "Max Approved Loan Amount:",
        Price: sum,
        MaxLoanAmt: sum1
      });
    }
  });

  //jQuery("#loanGrid").jqGrid('filterToolbar', { stringResult: true,  searchOnEnter: false, defaultSearch: "cn" });
});

person user244394    schedule 13.05.2016    source источник
comment
Вам нужно включить код, который изменяет размер сетки (что-то вроде $(window).bind("resize", ...)). См. jsfiddle.net/OlegKi/andm1299/45 или jsfiddle.net/OlegKi/andm1299/46 и ответ, этот, этот и некоторые другие   -  person Oleg    schedule 14.05.2016
comment
@Олег- Спасибо. Я добавил следующий код в соответствии с примером, и теперь он отзывчив, но не полностью. Отзывчивость падает, например, после того, как размер экрана достигает 778 пикселей. Как я могу заставить его работать? чего ами не хватает? Я последовал вашему примеруhttp://jsfiddle.net/ejpn9/4/, и это моя скрипка jsfiddle.net /dev2020/w7pxts0z/3   -  person user244394    schedule 16.05.2016
comment
Почему вы все время выкладываете демо, которые не работают? Вы можете просто изменить мои демонстрации и включить свой код и данные, чтобы иметь работающие демонстрации. Если вам нужно загрузить данные из url, вы можете использовать службу Echo jsfiddle: вам нужно просто использовать url: '/echo/json/' и отправить данные JSON в качестве параметра json. В случае jqGrid это означает использование url: '/echo/json/', mtype: "POST", datatype: "json", postData: { json: JSON.stringify(jsonData) }. См. jsfiddle.net/OlegKi/w7pxts0z/5. Что именно вы хотите исправить?   -  person Oleg    schedule 16.05.2016
comment
Вы должны описать, какое адаптивное поведение нужно реализовать при изменении размера. Например, можно изменить размер всех столбцов, можно изменить размер одного конкретного столбца или можно скрыть некоторые столбцы, если размер сетки (размер внешнего контейнера) будет меньше некоторого значения. Например, вы можете добавить classes: "hidden-xs", labelClasses: "hidden-xs" в некоторые столбцы, чтобы скрыть столбец шириной 768 пикселей: jsfiddle.net/OlegKi /w7pxts0z/6 См. здесь другие классы, которые вы можете использовать   -  person Oleg    schedule 16.05.2016
comment
@Олег - Спасибо. Я пытался изменить размер всех столбцов   -  person user244394    schedule 16.05.2016
comment
Если вы не хотите скрывать некоторые столбцы, я не понимаю вашей проблемы. Вы только что написали Отзывчивость работает, но не полностью. Вы должны точно указать, что вам нужно реализовать, а что не работает.   -  person Oleg    schedule 17.05.2016


Ответы (1)


Вы можете использовать классы Bootstrap .visible-* или hidden-*, чтобы скрыть/показать некоторые элементы на странице в зависимости от разрешения окна (см. документация). Свойства classes, labelClasses или colModel можно использовать в бесплатном jqGrid (начиная с версии 4.8, см. здесь и здесь), чтобы назначьте классы столбцу. Например, в демонстрации https://jsfiddle.net/OlegKi/w7pxts0z/7/ используется

classes: "hidden-xs hidden-sm", labelClasses: "hidden-xs hidden-sm"

в столбце LTVCategory и свойствах

classes: "hidden-xs", labelClasses: "hidden-xs"

в столбцах ShareQuantity и SharePrice. В результате столбец LTVCategory будет скрыт на "очень маленьких устройствах" (ширина‹768px) и "маленьких устройствах" (ширина‹992px, но ширина >=768px).

person Oleg    schedule 16.05.2016
comment
Спасибо большое, вы как всегда очень подробно и доступно описываете. Я смог сделать его отзывчивым по большей части даже после того, как следуя вашему примеру слово в слово ..., отзывчивая часть, похоже, не работала ниже 700 пикселей. Но тот же код прекрасно работает в JSFIDDLE jsfiddle.net/dev2020/w7pxts0z/18, но не на моей машине .. Кроме того, есть способ передать имя данных JSON в подпись. пример подписи: ‹b›Залоговая стоимость‹/b› ‹span class='pull-right' style='margin-right:20px;'›Оценка по состоянию на: + Имя+ ‹/span›, - person user244394; 19.05.2016
comment
@ user244394: Добро пожаловать! Почему вы всегда публикуете нерабочие демонстрации jsfiddle? В последнем есть синтаксическая ошибка: отсутствует запятая в конце строки 93 после labelClasses: "hidden-sm" перед template: "number",. Фиксированный — jsfiddle.net/OlegKi/w7pxts0z/19. Чтобы добавить Name, вы можете использовать jsonData.Name: jsfiddle.net/OlegKi/w7pxts0z/20. Вы можете изменить caption динамически, используя альтернативный метод setCaption. - person Oleg; 19.05.2016
comment
Я только что опубликовал рабочую версию своего кода, я использую живые веб-сервисы для заполнения таблицы в реальной жизни по сравнению с консервированными данными скрипки. Благодаря вам он работает, за исключением двух вещей: внутри подписи, когда я передаю jsonData.clientId, я получаю неопределенность, а для процента не отображается форматирование%: 'percentage', jsfiddle.net/dev2020/w7pxts0z/34 варианты формата: { префикс: , суффикс: } - person user244394; 19.05.2016
comment
@ user244394: jsonData не имеет свойства borrower. Вы можете использовать, например, jsonData[0].borrower вместо jsonData.borrower, но я не уверен, что это то, что вы хотите отобразить. Предустановленных formatter: 'percentage' нет. Возможно, вы хотите использовать formatter: 'currency', formatoptions: { suffix: " %" }? См. https://jsfiddle.net/OlegKi/w7pxts0z/35/ - person Oleg; 19.05.2016
comment
@ user244394: Вопрос все еще открыт. Ваша первоначальная проблема (отзывчивое поведение бесплатной jqGrid) теперь решена? - person Oleg; 24.05.2016