亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JQGrid 減少窗口調整大小事件的列數

JQGrid 減少窗口調整大小事件的列數

陪伴而非守候 2021-12-23 15:52:57
我的 jqGrid 有問題。我有一張有很多列的表。當我更改窗口或在移動設備中打開 Web 應用程序時,它應該在網格表中只顯示 4 或 5 列而不是多列,否則它應該允許在網格內滾動。那么如何在窗口調整大小事件上減少JQGrid中的列數呢?我嘗試過如下操作,并且調整大小事件工作正常,但由于網格中有更多列且沒有滾動條,外觀和感覺不太好。我的HTML,<table id="list2"></table>我的 jqGrid 代碼, $("#list2").jqGrid({    url: '/Project/GridData',    datatype: "json",    mtype: 'POST',    colNames: ['edit', 'view','id','Project_Name','Project_Name2','Project_Nam3','Project_Number','Project_Manager', 'Business_Unit', 'Project_Admin_Name', 'Remarks', 'Is_Active', 'Created_Date','Modified_Date'],    colModel: [        { name: 'edit', index: 'edit', width: 55 },        { name: 'view', index: 'view', width: 55 },        { name: 'id', index: 'id', width: 55, hidden: true },        { name: 'Project_Name', index: 'Project_Name', width: 140 },        { name: 'Project_Name2', index: 'Project_Name2', width: 140 },        { name: 'Project_Name3', index: 'Project_Name3', width: 140 },        { name: 'Project_Number', index: 'Project_Number', width: 140 },        { name: 'Project_Manager', index: 'Project_Manager', width: 140 },        { name: 'Business_Unit', index: 'Business_Unit', width: 140 },        { name: 'Project_Admin_Name', index: 'Project_Admin_Name', width: 140, align: "right" },        { name: 'Remarks', index: 'Remarks', width: 180, align: "right" },        { name: 'Is_Active', index: 'Is_Active', width: 100, align: "right" },        { name: 'Created_Date', index: 'Created_Date', width: 150, sortable: false },        { name: 'Modified_Date', index: 'Modified_Date', width: 150, sortable: false }    ],    rowNum: 10,    rowList: [10, 20, 30,50,100,500,1000],    //pager: '#pager2',    sortname: 'id',    viewrecords: true,    sortorder: "desc",    loadonce: true,    ignoreCase: true,    viewrecords: true,    pagepos: 'left',    forceFit: true,    shrinkToFit: false, // to enable the scroll bar in the responsive mode    height: 500,    width:1600,    altRows:true,    altclass:'myAltRowClass'});
查看完整描述

2 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

請附上總是你的問題有關的信息的版本的jqGrid的,您可以使用(或者你可以使用),和叉的jqGrid的(免費的jqGrid,商業Guriddo jqGrid的JS或舊的jqGrid版本<= 4.7)。


如果您使用免費的 jqGrid fork,那么您可以在相應的列中添加類似classes: "hidden-xs", labelClasses: "hidden-xs"或 的屬性classes: "hidden-xs hidden-sm", labelClasses: "hidden-xs hidden-sm"。見演示從舊的回答更多的細節。如果你不使用 Bootstrap CSS,你可以hidden-**手動添加類的定義:


@media (max-width: 767px) {

  .hidden-xs {

    display: none !important;

  }

}

@media (min-width: 768px) and (max-width: 991px) {

  .hidden-sm {

    display: none !important;

  }

}

@media (min-width: 992px) and (max-width: 1199px) {

  .hidden-md {

    display: none !important;

  }

}

@media (min-width: 1200px) {

  .hidden-lg {

    display: none !important;

  }

}

如果您使用舊版本的 jqGrid 并且您確實無法升級到免費的 jqGrid 或 Guriddo 那么您可以嘗試使用


$(window).bind("resize", function () {

    // your resize handler

}).triggerHandler("resize");

并調用hideCol或showCol隱藏/顯示調整大小的列。如果您需要遵循這種方式,我建議您緩存要調用的隱藏/可見列的列表,hideCol或者showCol僅在確實需要更改時才進行緩存。要檢測您可以使用的當前分辨率window.matchMedia(請參閱此處)或獲取網格的某個外部 div 的寬度(外部 div of <table id="list2"></table>)。


更新:我創建了演示https://jsfiddle.net/OlegKi/n6g78two/,它使用 jqGrid 4.6 并演示了如何使用window.matchMedia在調整網格大小時隱藏/顯示一些列。"ComboDuration"如果視口的寬度為 767 像素或更小,演示將隱藏最后一列。它使用以下代碼:


function hideOrShowColumns (e) {

    if (e.matches) {

        // we have view ports of 767 pixels wide or less

        $grid.jqGrid("hideCol", "ComboDuration");

    } else {

        $grid.jqGrid("showCol", "ComboDuration");

    }

}

var mql = window.matchMedia('(max-width: 767px)');

hideOrShowColumns(mql);

mql.addListener(function (e) {

    hideOrShowColumns(e);

});


$(window).bind("resize", function () {

    $grid.jqGrid("setGridWidth", $grid.closest(".my-container").width());

}).triggerHandler("resize");


查看完整回答
反對 回復 2021-12-23
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

您可以使用以下方法:showCol 和 hideCol 根據條件隱藏/顯示列。請注意,這些方法接受數組作為參數以一次顯示和隱藏更多列。文檔可以在這里找到。


舉個例子,你可以這樣做


var $grid = $("#ProjectSearchGrid"),

$grid.jqGrid("hideCol", ["Project_Name2", "Project_Name3"]); // hide these cols before resizing

newWidth = $grid.closest(".ui-jqgrid").parent().width();

$grid.jqGrid("setGridWidth", newWidth, true);

除此之外,如果您使用 Guriddo jqGrid,您可以使用函數isMobile在移動設備中加載網格時隱藏一些列。


通過示例為列 Project_name2 執行此操作,您可以執行此操作


colModel: [

    ...

    { name: 'Project_Name2', index: 'Project_Name2', width: 140, hidden: $.jgrid.isMobile() },



查看完整回答
反對 回復 2021-12-23
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號