2017-02-14 99 views
0

我正在使用jqGrid 4.5.3。版本號其中我已經升級到免費jqGrid版本4.13.6。升級後,我面臨以下問題jqGrid排序/過濾問題

  1. 排序是不是所有列的工作
  2. 我想要顯示的列大小按本人已設置autoResizable: trueautoresizeOnLoad: true,仍列寬不設置爲內容每個內容

下面是我的jqGrid代碼寫在document.Ready功能

jQuery("#jqgrid").jqGrid({ 
      url: '@Url.Action("GetClassList", "Class")', 
      datatype: 'json', 
      height: 'auto', 
      colNames: ['ClassID','CourseID', '@objLocalizer["Class_Title_GridCol"]','@objLocalizer["ViewCourseDetails"]','@objLocalizer["ViewClassSchedule"]', '@objLocalizer["Class_AssignUser"]','@objLocalizer["ClassCreatedBy"]','@objLocalizer["ClassCreatedDate"]'], 
      colModel: [ 

       { 
        name: 'Class.ClassID', 
        index: 'Class.ClassID', 
        sortable: true, 
        hidden: true 
       }, 
       { 
        name: 'Class.CourseID', 
        index: 'Class.CourseID', 
        sortable: true, 
        hidden: true 
       }, 
       { 
        name: 'ClassLang.Title', 
        index: 'ClassLang.Title', 
        sortable: true, 
        formatter: addLink, 

       }, 
       { 
        name: 'CourseDetails', 
        index: 'CourseDetails', 
        sortable: false, 
        align: 'center', 
        title: false, 
        formatter:AddCourseDetailsLink 
       }, 
       { 
        name: 'ClassSchedule', 
        index: 'ClassSchedule', 
        sortable: false, 
        align: 'center', 
        title: false, 
        formatter:AddViewClassScheduleLink 
       }, 
       { 
        name: 'AssignUser', 
        index: 'AssignUser', 
        sortable: false, 
        align: 'center', 
        title: false, 
        formatter: AddAssignUserLink 
       }, 
       { 
        name: 'UserName', 
        index: 'UserName', 
        align: 'center', 
        sortable: true 
       }, 
       { 
        name: 'Class.WhenCreated', 
        index: 'Class.WhenCreated', 
        align: 'center', 
        formatter:'date', 
        sortable: true 
       }], 

      rowNum: 10, 
      rowList: [10, 20, 30], 
      pager: '#pjqgrid', 
      sortname: "Title", 
      sortorder: "desc", 
      toolbarfilter: true, 
      viewrecords: true, 
      multiSort: true, 
      sortable: true, 
      loadonce: true, 
      ignoreCase: true, 
      gridComplete: function() { 

       $("#progbar").css('width', '100%') 
       $("#progess").hide(); 
       $("#grid").css("visibility", 'visible'); 

      }, 
      editurl: " ", 
      caption: "", 
      multiselect: false, 
      autowidth: true, 

     }); 

我還增加了以下功能擴展電網按照可用的選項卡

$(window).on('resize.jqGrid', function() { 
     $("#jqgrid").jqGrid('setGridWidth', $("#content").width()); 
    }) 

HTML標記

<div class="well well-sm well-light" id="content"> 
    <div id='divResult'> 
     @{ 
      await Html.RenderPartialAsync("~/ViewsBackend/Class/_ClassTab.cshtml"); 
     } 
    </div> 

    <section id="widget-grid" class=""> 
     <div class="row"> 
      <article class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
       <div id="grid"> 
        <table id="jqgrid"></table> 
        <div id="pjqgrid"></div> 
        <br> 
       </div> 
       <br> 
      </article> 
     </div> 
    </section> 
</div> 

編輯1: - 自定義格式

function addLink(cellvalue, options, rowObject) { 

      return "<a href='#' style='height:25px;width:120px;' type='button' onclick=CallActionMethod(" + "'" + rowObject.Class.ClassID + "'" + ")>" + rowObject.ClassLang.Title + "</a>"; 

    } 

    function AddAssignUserLink(cellvalue, options, rowObject){ 

      return "<button class='btn btn-xs btn-default' data-placement='center' title='@objLocalizer["Class_AssignUser"]' onclick='AssignUser(" + rowObject.Class.ClassID + ")'\"><i class='fa fa-users fa-lg' aria-hidden='true'></i></a>"; 
    } 

    function AddCourseDetailsLink(cellvalue, options, rowObject){ 

      return "<button class='btn btn-xs btn-default' data-placement='center' title='@objLocalizer["ViewCourseDetails"]' onclick='CourseDetails(" + rowObject.Class.CourseID + ")'\"><i class='fa fa-file fa-lg' aria-hidden='true'></i></a>"; 

    } 

    function AddViewClassScheduleLink(cellvalue, options, rowObject){ 

      return "<button class='btn btn-xs btn-default' data-placement='center' title='@objLocalizer["ViewClassSchedule"]' onclick='ViewClassSchedule(" + rowObject.Class.ClassID + ")'\"><i class='fa fa-calendar fa-lg' aria-hidden='true'></i></a>"; 

    } 

這些方法是從自定義格式稱爲

function CallActionMethod(cellvalue) { 
     $.ajax({ 

      type: "POST", 
      url: '@Url.Action("SetClassDetailsClassID", "Class")', 
      data: { cellvalue: cellvalue }, 
      success: function (data) { 
       document.location.href = "@Url.Action("ClassDetails", "Class")"; 
      } 
     }); 
    } 

    function ViewClassSchedule(ClassID){ 

     $.ajax({ 

      type: "POST", 
      url: '@Url.Action("SetClassDetailsClassID", "Class")', 
      data: { cellvalue: ClassID }, 
      success: function (data) { 
       document.location.href = "@Url.Action("ClassSchedule", "Class")"; 
      } 
     }); 
    } 

    function AssignUser(ClassID) { 

     $.ajax({ 
      type: "POST", 
      url: '@Url.Action("AssignUser", "Class")', 
      data: { classid: ClassID }, 
      success: function (data) { 

       jQuery(".modal-content").html(''); 
       jQuery(".modal-content").html(data); 
       jQuery("#AssignUserModal").modal('show'); 

      } 
     }); 
    } 

    function CourseDetails(CourseID) 
    { 

     $.ajax({ 

      type: "POST", 
      url: '@Url.Action("setcourseid", "Course")', 
      data: { cellvalue: CourseID }, 
      success: function (data) { 

       document.location.href = "@Url.Action("CourseDetails", "Course")"; 
      } 
     }); 

    } 

與更新版本

enter image description here 在此感謝所有幫助截圖jqGrid的的!

+0

請參閱本http://stackoverflow.com/questions/3906300/jqgrid-and-the-autowidth-option-how-does -it-work –

+0

您能否包含代碼中使用的自定義格式化程序代碼('addLink','AddCourseDetailsLink','AddViewClassScheduleLink','AddAssignUserLink')? – Oleg

回答

1

您可以修復你的代碼下面

$(window).on("resize", maximizeGrid); 
$grid.on("jqGridAfterLoadComplete", function() { 
    var colModel = $(this).jqGrid("getGridParam", "colModel"), i, cm; 

    // reset widthOrg to the new values after autoResizeAllColumns 
    for (i = 0; i < colModel.length; i++) { 
     cm = colModel[i]; 
     cm.widthOrg = cm.width; 
    } 
    maximizeGrid(); 
}); 

$grid.jqGrid({ 
    datatype: "json", 
    url: "/echo/json/", 
    mtype: "POST", 
    postData: { 
     json: JSON.stringify(serverResponse) 
    }, 
    colModel: [ 
     { 
      name: 'ClassID', 
      key: true, 
      jsonmap: 'Class.ClassID', 
      hidden: true 
     }, 
     { 
      name: 'Title', 
      formatter: addLink, 
      jsonmap: 'ClassLang.Title' 
     }, 
     { 
      name: 'CourseDetails', 
      sortable: false, 
      align: 'center', 
      formatter:AddCourseDetailsLink, 
      title: false 
     }, 
     { 
      name: 'ClassSchedule', 
      sortable: false, 
      align: 'center', 
      formatter:AddViewClassScheduleLink, 
      title: false 
     }, 
     { 
      name: 'AssignUser', 
      sortable: false, 
      align: 'center', 
      formatter: AddAssignUserLink, 
      title: false 
     }, 
     { 
      name: 'UserName', 
      align: 'center' 
     }, 
     { 
      name: 'WhenCreated', 
      jsonmap: 'Class.WhenCreated', 
      align: 'center', 
      formatter:'date' 
     } 
    ], 
    iconSet: "fontAwesome", 
    rowNum: 10, 
    rowList: [10, 20, 30], 
    pager: true, 
    sortname: "Title", 
    sortorder: "desc", 
    viewrecords: true, 
    multiSort: true, 
    sortable: true, 
    loadonce: true, 
    additionalProperties: ['Class', 'ClassLang'], 
    autoencode: true, 
    cmTemplate: { 
     autoResizable: true 
    }, 
    autoresizeOnLoad: true, 
    autowidth: true, 
    autoResizing: { 
     //resetWidthOrg: true, 
     compact: true 
    } 
}); 

觀看演示https://jsfiddle.net/OlegKi/b15pmdcg/4/。您可以閱讀更多的細節更多細節widthOrgthe issue。同一問題解釋autoResizing的新resetWidthOrg: true財產。

我建議你考慮使用的自定義按鈕的formatter: "actions"(見the wiki article瞭解詳細信息)

{ 
    name: "act", label: "Details", template: "actions", width: 70, 
    formatoptions: { editbutton: false, delbutton: false } 
} 

actionsNavOptions: { 
    courseDetailsicon: "fa-file", 
    courseDetailstitle: "show course details", 
    classScheduleicon: "fa-calendar", 
    classScheduletitle: "class schedule", 
    assignUsericon: "fa-users", 
    assignUsertitle: "Assign user to class", 
    custom: [ 
     { action: "courseDetails", position: "first", 
      onClick: function (options) { 
       alert("Course Details, rowid=" + options.rowid); 
      } }, 
     { action: "classSchedule", position: "first", 
      onClick: function (options) { 
       alert("Class Schedule, rowid=" + options.rowid); 
      } }, 
     { action: "assignUser", 
      onClick: function (options) { 
       alert("Assign User, rowid=" + options.rowid); 
      } } 
    ] 
} 

可以看到另一個演示https://jsfiddle.net/OlegKi/rmsz529L/3/結果選項

順便說一下,您可以使用相同的演示與Boostrap CSS而不是jQuery UI CSS。您將需要再補充guiStyle: "bootstrap"選項的jqGrid的:

https://jsfiddle.net/OlegKi/b15pmdcg/8/

https://jsfiddle.net/OlegKi/rmsz529L/2/

+0

感謝您的回覆。請給我一些時間來測試它,並會讓你知道任何疑問! – Rohit

+0

感謝您的幫助!這是根據我的預期工作,只有我是一些問題,如啓用排序多列,我認爲這會自動應用,但它不排序數據。點擊幾下(精確點擊3次,上下箭頭消失)。此外,我添加了'guiStyle:「bootstrap」'後,只有分頁控件受到干擾(不知道它與其他CSS衝突,因爲我正在使用現成的模板)。在之前的jqGrid版本中,我使用了搜索,刷新按鈕和添加按鈕(我們添加了自定義按鈕)。那麼我們如何添加這些? – Rohit

+0

我已經用最新版本的jqGrid的屏幕截圖更新了問題。 – Rohit