2011-11-14 13 views
1

デフォルトのソートを持つグリッドをフィールドの1つにロードしたいとします。 sortnameとsortorderをグリッドに追加することでこれを行いましたが、グリッドが読み込まれるとソート記号がそのフィールドのヘッダーに表示されます。ただし、グリッドのロードではなくページネーションの次のボタンをクリックするとレコードがソートされます。グリッドがロードされるときに特定のフィールドでjqgridのデフォルトのソート

グリッド負荷でソートされない理由は誰にも分かりますか?

@UPDATE: こんにちは、私はXMLと私の設定として自分のデータ型を使用しています。以下のとおりである。

jQuery("#userList").jqGrid({ 
    url: '<%=request.getContextPath()%>/userJqGrid?q=1&action=fetchData&userCookie=<%= encodedCookie%>', 
    datatype: 'xml', 
    mtype: 'GET', 
    colNames:['<%= userProp.getProperty(userColNames[0])%>', 
       '<%= userProp.getProperty(userColNames[1])%>', 
       '<%= userProp.getProperty(userColNames[2])%>', 
       '<%= userProp.getProperty(userColNames[3])%>', 
       '<%= userProp.getProperty(userColNames[4])%>', 
       '<%= userProp.getProperty(userColNames[5])%>' 
    ], 
    colModel:[ 
     {name:'<%= userColNames[0]%>',index:'<%= userColNames[0]%>', 
      width:120,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:1, elmprefix:'*'}}, 
     {name:'<%= userColNames[1]%>',index:'<%= userColNames[1]%>', 
      width:130,sortable:true,editable:true}, 
     {name:'<%= userColNames[2]%>',index:'<%= userColNames[2]%>', 
      width:100,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:3, elmprefix:'*'}}, 
     {name:'<%= userColNames[3]%>',index:'<%= userColNames[3]%>', 
      width:180,sortable:true,editable:true,editrules:{email:true,required:true},formoptions:{rowpos:4, elmprefix:'*'}}, 
     {name:'<%= userColNames[4]%>',index:'<%= userColNames[4]%>', 
      width:100,sortable:true,editable:true}, 
     {name:'<%= userColNames[5]%>',index:'<%= userColNames[5]%>', 
      width:100,sortable:true,editable:true}, 
    ], 
    pager:'#pager1', 
    rowNum:'<%=appProp.getProperty("per_page_records")%>', 
    height:'auto', 
    viewrecords:true, 
    loadonce:true, 
    sortable:true, 
    width:'100%', 
    gridview: true, 
    autowidth:true, 
    shrinkToFit:false, 
    ignoreCase:true, 
    editurl:'<%=request.getContextPath()%>/userJqGrid?q=1&action=addData&userCookie=<%=encodedCookie%>', 
    caption: 'User Records', 
    sortname:'<%=userColNames[14]%>', 
    sortorder:'asc', 
    onSelectRow: function (id){ 
     checkAndSetCookie(); 
    }, 
    onSortCol : function(){ 
     checkAndSetCookie(); 
    }, 
    onPaging : function(){ 
     checkAndSetCookie(); 
    }, 
    onSearch : function(){ 
     checkAndSetCookie(); 
    }, 
    loadComplete: function(){ 
     checkAndSetCookie(); 
    } 
}); 
+1

どのデータバックエンドを使用しますか?データがどのように読み込まれますか? JSON、ローカル配列など?そして、あなたのjqGrid設定をここに投稿してください。私たちはあなたを助けます。 –

+0

こんにちは、私は追加し、私の設定を更新します。 –

+0

FireBug(コンソール)でチェックすると、URLにsidxとsordパラメータがありますか? –

答えて

5

リモートdatatypedatatype: 'xml'またはdatatype: 'json')を使用している場合サーバーは、最初のロード時にデータをソートするための責任があります。 loadonce: trueを使用し、データをクライアント側でのみソートする場合は、を最初にロードした直後にjqGridをリロードする必要があります。対応するコードは、次

loadComplete: function (data) { 
    var $this = $(this), 
     datatype = $this.getGridParam('datatype'); 

    if (datatype === "xml" || datatype === "json") { 
     setTimeout(function() { 
      $this.trigger("reloadGrid"); 
     }, 100); 
    } 
} 

UPDATEについてかもしれない:Free jqGridフォークloadonce: trueオプションと組み合わせて使用​​することができるオプションforceClientSorting: trueを有しています。 forceClientSorting: trueオプションは、クライアント側のソートとフィルタリングを強制します。それは答えに記述されたコードを不要にします。

+0

これはうまくいきました。今、Olegにお返事いただきありがとうございます。 –

+0

@バグワット:ようこそ!問題が解決した場合は、回答を受け入れることができます(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – Oleg

関連する問題