2017-02-14 16 views
0

jqGrid 4.5.3を使用していました。バージョン無料jqGridバージョン4.13.6にアップグレードしました。アップグレードした後、私はソートは、すべての列 jqGridで並べ替え/フィルタリングの問題

  • のために働いていない

    1. 私はautoResizable: trueautoresizeOnLoad: trueを設定している、まだ列幅は以下のように設定されていないコンテンツごとに列のサイズを表示する次の問題に直面していますコンテンツごとに
    2. 以下

    は私の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>"; 
    
        } 
    

    これらのメソッドは、更新されたバージョン

    enter image description here とjqGridのスクリーンショットこの感謝の任意のヘルプカスタムフォーマッタから

    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")"; 
          } 
         }); 
    
        } 
    

    と呼ばれています!

  • +0

    はこれを参照してくださいhttp://stackoverflow.com/questions/3906300/jqgrid-and-the-autowidth-option-how-does:あなたは必要なだけのjqGridのguiStyle: "bootstrap"オプションが追加されます-it-work –

    +0

    コードで使用するカスタムフォーマッタ( 'addLink'、' AddCourseDetailsLink'、 'AddViewClassScheduleLink'、' AddAssignUserLink')のコードを含めることができますか? – Oleg

    答えて

    1

    あなたはデモhttps://jsfiddle.net/OlegKi/b15pmdcg/4/を参照してください、次の

    $(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 
        } 
    }); 
    

    にコードを修正することができます。詳細はこちらwidthOrgの詳細はthe issueです。同じ問題で新しいresetWidthOrg: trueプロパティの説明がautoResizingとなっています。

    I(詳細はthe wiki articleを参照)formatter: "actions"のカスタムボタンを使用することを検討する

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

    、もう1つは別のデモhttps://jsfiddle.net/OlegKi/rmsz529L/3/に結果を見ることができるオプション

    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); 
          } } 
        ] 
    } 
    

    あなたをお勧めします

    ところで、jQuery UI CSSではなく、Boostrap CSSで同じデモを使用することができます。

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

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

    +0

    お返事ありがとうございます。私はそれをテストするためにいくつかの時間を許可し、任意のクエリのためにあなたを知らせる! – Rohit

    +0

    助けてくれてありがとう!それは私の期待通りに働いていますが、私は複数の列のソートを有効にするような問題はいくつかありますが、これは自動的に適用されると思いますが、データをソートしていません。数回クリックすると(正確に3回クリックすると、上向き矢印は消える)また、 'guiStyle:" bootstrap "'を追加してから、ページ区切りのコントロールだけが乱れてしまいます(準備ができたテンプレートを使用しているので、他のCSSと競合しているかどうかはわかりません)。 jqGridの以前のバージョンでは、私は検索、更新ボタンと追加ボタン(私たちが追加したカスタムボタン)を持っていました。では、どうやってそれらを追加できますか? – Rohit

    +0

    jqGridのスクリーンショットを最新のバージョンで更新しました。 – Rohit

    関連する問題