0

次の 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'}の CSS クラスに を追加していることに注意してください。<th>Chrome のインスペクターで証明されているように、正しく適用されています。

ここに画像の説明を入力

私は間違って何をしていますか?

4

1 に答える 1

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>
于 2013-08-22T15:18:25.523 に答える