次の 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 のインスペクターで証明されているように、正しく適用されています。
私は間違って何をしていますか?