Tablesorter自定义分析程序逗号不起作用?

时间:2013-08-22 14:54:36

标签: jquery

我正在使用以下jQuery对表进行排序:

jQuery.tablesorter.addParser({
  id: 'fancyNumber',
  is: function (s) {
    return /^[0-9]?[0-9,\.]*$/.test(s);
  },
  format: function (s) {
    return jQuery.tablesorter.formatFloat(s.replace(/,/g, ''));
  },
  type: 'numeric'
});
$(document).ready(function () {
  $("#<%=gvReport.ClientID%>").tablesorter();
});

但是,自定义解析器不能正确地使用逗号对数字进行排序。它将它们视为字符串。我已经将CSS类应用到我的标题单元格中,如下所示:

<asp:TemplateField ItemStyle-HorizontalAlign="Right" ItemStyle-CssClass="green" 
    FooterStyle-HorizontalAlign="Right" FooterStyle-CssClass="green" 
    HeaderStyle-CssClass="green {sorter: 'fancyNumber'}" HeaderStyle-Width="4.55%">

    <HeaderTemplate>
        <asp:Label ID="lblHForecast_total" Text="Forecast" runat="server"></asp:Label>
    </HeaderTemplate>

    <ItemTemplate>
        <asp:Label ID="lblForecast_total" Text='<%#Eval("f_total", "{0:#,###,0}")%>' runat="server" CssClass="txtBoldSmall"></asp:Label>
    </ItemTemplate>

    <FooterTemplate>
       <asp:Label runat="server" ID="lblFForecast_total" CssClass="txtBoldSmall">
        </asp:Label>
     </FooterTemplate>
 </asp:TemplateField>

请注意,我正在将{sorter: 'fancyNumber'}添加到我要排序的<th>的CSS类中。它正确应用,Chrome的检查员证明了这一点:

enter image description here

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我最终在jQuery调用中明确定义了'fancyNumber'排序的列,如下所示:

<script type="text/javascript">
$.tablesorter.addParser({
        id: 'fancyNumber',
        is: function(s) {
            return /^[0-9]?[0-9,\.]*$/.test(s);
        },
        format: function(s) {
            return jQuery.tablesorter.formatFloat(s.replace(/,/g, ''));
        },
        type: 'numeric'

    });
    $(document).ready(function() {
        $("#<%=gvReport.ClientID%>").tablesorter({
            headers: {
                2:{sorter:'fancyNumber'},
                3:{sorter:'fancyNumber'},
                4:{sorter:'fancyNumber'},
                5:{sorter:'fancyNumber'},
                6:{sorter:'fancyNumber'},
                7:{sorter:'fancyNumber'},
                8:{sorter:'fancyNumber'},
                9:{sorter:'fancyNumber'},
                10:{sorter:'fancyNumber'},
                11:{sorter:'fancyNumber'},
                12:{sorter:'fancyNumber'},
                13:{sorter:'fancyNumber'},
                14:{sorter:'fancyNumber'},
                15:{sorter:'fancyNumber'},
                16:{sorter:'fancyNumber'},
                17:{sorter:'fancyNumber'},
                18:{sorter:'fancyNumber'},
                19:{sorter:'fancyNumber'}
            }
        });
    });
</script>