我正在使用以下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的检查员证明了这一点:
我做错了什么?
答案 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>