2014-01-28 35 views
0

大家下午好。使用Jquery tablesorter對顯示爲mm/yyy的列進行排序,以yyyymm順序排序

我有一張表格,其日期以mm/yyyy格式顯示。當我點擊一列時,我想以yyyymm升序或降序顯示列。我正在使用jQuery的tablesorter,並已閱讀我可以使用解析器,但似乎無法獲得語法。

任何人都可以對此有所瞭解嗎?

謝謝。

我有這個在我的外部.js文件:

$("#adminInterestInformationTable").tablesorter({ headers: { 5: { sorter: "yyyymm" } } }); 

var oTable = $("#adminInterestInformationTable").dataTable({ 
    //"sScrollY": tableHeight + "px", 
    "bPaginate": false, 
    "bFilter": false, 
    "bInfo": true, 
    "bStateSave": true, 
    "bAutoWidth": true, 
    //"oLanguage": { "sEmptyTable": "No Public Assistance" }, 
    "oLanguage": { "sEmptyTable": "No Interest" }, 
    "aoColumns": [ 
     { "bSortable": false, "sWidth": "5px" }, 
     { "sWidth": "15px" }, 
     { "sWidth": "20px" }, 
     { "sWidth": "20px" }, 
     { "sWidth": "20px" }, 
     { "iDataSort": 7, "sWidth": "20px" }, //Override and Sort to the 8th column 
     { "iDataSort": 8, "sWidth": "20px" }, //Override and Sort to the 9th column 
     { "bVisible": false, "sWidth": "50px" }, 
     { "bVisible": false, "sWidth": "50px" } 

    ] 
}); 

下面是ASPX(InterestStartDate是專欄中,我想排序):

<table id="adminInterestInformationTable" class="leftNavTable" summary="List of all Interest"> 
<thead style="background: #0B649F; color: white"> 
    <tr> 
     <th> 
      <input type='checkbox' id="selectAllItems" alt="Select all inactive Interest" /> 
     </th> 
     <th>IVD # 
     </th> 
     <th style="text-align: center">Interest Rate 
     </th> 
     <th style="text-align: center">Interest Type 
     </th> 
     <th>Sub Account 
     </th> 
     <th>Start Date 
     </th> 
     <th>End Date 
     </th> 


    </tr> 
</thead> 
<tfoot> 
</tfoot> 
<tbody> 
    <asp:Repeater ID="InterestListRepeater" runat="server" EnableViewState="true" 
     OnItemCommand="InterestList_ItemCommand" OnItemDataBound="InterestList_OnItemDataBound"> 
     <ItemTemplate> 
      <tr id="InterestRepeaterRow" runat="server"> 

       <td> 
        <input type="checkbox" id="InterestRowCheckbox" name="paymentinterest"  value='<%# DataBinder.Eval(Container.DataItem, "PaymentInterestId") %>' 
         alt='<%# DataBinder.Eval(Container.DataItem, "PaymentInterestId") %>'  runat="server" /> 
       </td> 

       <td> 
        <asp:LinkButton ID="InterestSelectLinkButton" CausesValidation="false"  Style="display: none" runat="server" 
         Text="Select" CommandArgument='<%#DataBinder.Eval (Container.DataItem, "PaymentInterestID")%>'></asp:LinkButton> 

        <asp:Label ID="IVDNumber" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "CaseNumber")%>' /> 
       </td> 
       <td style="text-align: right"> 
        <asp:Label ID="InterestRate" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "InterestPercent")%>' /> 
       </td> 
       <td style="text-align: center"> 
        <asp:Label ID="InterestType" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "InterestTypeDescription")%>' /> 
       </td> 

       <td> 
        <asp:Label ID="SubAccount" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "SubAccountTypeCd")%>' /> 
       </td> 
       <td> 
        <asp:Label ID="InterestStartDate" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "InterestStartDate")%>' /> 
       </td> 
       <td> 
        <asp:Label ID="InterestEndDate" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "InterestEndDate")%>' /> 
       </td> 
       <td> 
        <asp:Label ID="InterestStartDateSort" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "InterestStartDateOriginal")%>' /> 
       </td> 
       <td> 
        <asp:Label ID="InterestEndDateSort" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "InterestEndDateOriginal")%>' /> 
       </td> 
      </tr> 
     </ItemTemplate> 
    </asp:Repeater> 
</tbody> 
</table> 
+0

你共享的代碼有兩個tablesorter和數據表的代碼......你使用哪一個(你不能同時使用)? – Mottie

+0

在外部.js文件中,「var otable」引用ASPX中的表adminInterestInformationTable。在上面有一個聲明說要將列排序爲貨幣: – KentE

+0

未完成:$(「#adminInterestInformationTable」)。tablesorter({headers:{0:{sorter:false},2:{sorter:「currency 「}}});我想爲另一個專欄做一些祕密的事情。感謝您的幫助。 – KentE

回答

0

試試這個解析器(demo):

$.tablesorter.addParser({ 
    id: "mmyyyy", 
    is: function (s) { 
     return false; 
    }, 
    format: function (s) { 
     var date = s.split('/'); 
     if (date.length > 1) { 
      return new Date(date[1], parseInt(date[0]) - 1).getTime(); 
     } 
     return s; 
    }, 
    type: 'numeric' 
}); 

$('table').tablesorter({ 
    headers: { 
     2: { 
      sorter: 'mmyyyy' 
     } 
    } 
}); 
+0

我想在第5和第6列(開始和結束日期)搜索,所以我改變表分揀機: – KentE

+0

$(「表」)的tablesorter({ 頭:{ 0:{分揀機:假}, 2: {sorter:「currency」}, 5:{sorter:'mmyyyy'}, 6:{sorter:'mmyyyy'} } });和它工作!添加解析器例程是神祕的,需要更多地瞭解它。謝謝Mottie! – KentE

+0

基本上它需要這個字符串,將'/'分成一個數組。如果存在數組,則將其作爲日期。第二部分是年份,第一部分是月份(但我們需要它是一個基於零的索引,因此解析它並減去一個)...以秒爲單位返回時間,以便與其他單元格比較更容易。 – Mottie