【问题标题】:Jqgrid - Table not displaying responsive behaviorJqgrid - 表格不显示响应行为
【发布时间】:2016-05-13 21:18:07
【问题描述】:

嗨,我有以下代码,它使用 jqgrid 显示表格。但是,我注意到 jqGrid 都没有响应。

如何让现有的 jqGrid 响应平板电脑和智能手机

更新

我已使用以下内容更新了我的代码

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

响应性有效但不完全。

这是下面的代码和fiddle 这里 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" });
});

【问题讨论】:

  • 您需要包含调整网格大小的代码(类似于$(window).bind("resize", ...))。参见jsfiddle.net/OlegKi/andm1299/45jsfiddle.net/OlegKi/andm1299/46the answerthis onethis one 和其他一些
  • @Oleg- 谢谢。我按照示例添加了以下代码,它现在可以响应,但不完全。例如,在屏幕尺寸达到 778 像素后,响应能力就会崩溃。我怎样才能让它工作?我错过了什么?我跟着你的例子http://jsfiddle.net/ejpn9/4/ 这是我的小提琴jsfiddle.net/dev2020/w7pxts0z/3
  • 为什么你一直在发布那些不起作用的演示?您可以修改我的演示并包含您的代码和数据以进行工作演示。如果您需要从url 加载数据,那么您可以使用jsfiddle 的Echo 服务:您只需使用url: '/echo/json/' 并将JSON 数据作为json 参数发送。在 jqGrid 的情况下,它意味着url: '/echo/json/', mtype: "POST", datatype: "json", postData: { json: JSON.stringify(jsonData) } 的使用。请参阅jsfiddle.net/OlegKi/w7pxts0z/5您到底想修复什么?
  • 您应该描述在调整大小时需要实现的哪些响应行为。例如,可以调整所有列的大小,可以调整特定列的大小,或者如果网格大小(外部容器的大小)小于某个值,可以隐藏某些列。例如,您可以在某些列中添加classes: "hidden-xs", labelClasses: "hidden-xs" 以隐藏宽度jsfiddle.net/OlegKi/w7pxts0z/6 请参阅here 其他可以使用的类
  • @Oleg - 谢谢。我试图调整所有列的大小

标签: javascript jqgrid free-jqgrid


【解决方案1】:

您可以使用 Bootstrap 类 .visible-*hidden-* 根据窗口分辨率隐藏/显示页面上的某些元素(请参阅 the documentation)。属性classeslabelClassescolModel 可用于free jqGrid(从版本4.8 开始,请参阅herehere)将类分配给列。例如演示 https://jsfiddle.net/OlegKi/w7pxts0z/7/ 使用

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

LTVCategory 列和属性中

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

ShareQuantitySharePrice 列中。因此,LTVCategory 列将隐藏在“超小型设备”(宽度=768px)上。

【讨论】:

  • 非常感谢您一如既往的详细和描述性。即使在逐字逐句地遵循您的示例之后,我也能够使其大部分响应......,响应部分似乎无法在 700 像素以下工作。但是相同的代码在 JSFIDDLE jsfiddle.net/dev2020/w7pxts0z/18 中可以完美运行,但在我的机器上却不行。此外,还有一种方法可以将 json 数据“名称”传递给标题。示例说明:“抵押品价值 估值截至日期:“+ Name+””,
  • @user244394:不客气!为什么你总是发布不工作的 jsfiddle 演示?最后一个有语法错误:在labelClasses: "hidden-sm" 之后template: "number", 之前的第93 行末尾缺少逗号。固定的是jsfiddle.net/OlegKi/w7pxts0z/19。要添加Name,您可以使用jsonData.Namejsfiddle.net/OlegKi/w7pxts0z/20。您可以交替使用setCaption 方法动态更改caption
  • 我刚刚发布了我的代码的工作版本,我正在使用实时网络服务来填充现实生活中的表格与小提琴罐头数据。感谢您的工作,除了两件事,当我通过 jsonData.clientId 时,在标题中我得到了未定义,并且百分比未显示 % formatter: 'percentage', jsfiddle.net/dev2020/w7pxts0z/34 formatoptions: { prefix: " ", suffix: " " }
  • @user244394: jsonData 没有 borrower 属性。例如,您可以使用 jsonData[0].borrower 而不是 jsonData.borrower,但我不确定它是否是您想要显示的内容。 没有个预定义的formatter: 'percentage'。您可能想使用formatter: 'currency', formatoptions: { suffix: " %" }?见 ttps://jsfiddle.net/OlegKi/w7pxts0z/35/
  • @user244394:问题仍然存在。您最初的问题(免费 jqGrid 的响应行为)现在解决了吗?
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 2012-09-24
  • 2016-02-15
  • 2017-11-23
相关资源
最近更新 更多