0

我在使用 ASP.NET 生成的表上使用tablesorter 插件。我的问题是有一列带有一些日期(格式= YYYY-MM-DD),并且分拣机只在我的本地机器上工作。在服务器上发布时,它不会。我打开调试模式,发现在本地机器上,自动检测到的列的类型是isoDate,而在生产机器上,它是shortDate.

重要提示:当您查看日期时,它看起来完全一样。例如:2010-11-15。没有区别。但我很确定机器本身的本地设置非常不同,因此必须解释为什么一个被认为是 isoDate 而另一个被认为是 shortDate。

我还验证了该插件包含这两种格式的分类器。我有最新版本,似乎没有人有这个错误。

我究竟做错了什么?

我已经尝试过强制使用 isoParser :

$("#ChangeLogTable1").tablesorter({headers: { 0: { sorter: 'isoDate'}}});

编辑

我已经为此更改了我的代码(见下文)以强制“作为字符串”进行排序,它可以工作,因为我的日期格式给了我这种可能性,但如果格式为 dd-mm-yyyy,它将不起作用。所以我的问题仍然存在,但这是一种解决方法。

$(this).tablesorter({ headers: { 0: { sorter: 'text'} }});

编辑 2

这里是一些表格html,我只是把一些敏感数据换成了XXXX

<div style="width: 1300px">

        <table id="ChangeLogTable1" class="table tablesorter table-bordered"> 
        <thead>
            <tr>
            <th>Date de correction</th>
            <th>Correcteur</th>
            <th>BugID</th>
            <th>Catégorie</th>
            <th>Module</th>
            <th>Description de la correction</th>
            <th>Impact</th>
            <th>Rapporté par</th>
            <th>Demandé par</th>
            </tr>
        </thead>
        <tbody>

            <tr>
                <td width="125px"> 2012-10-10</a></td>
                <td width="100px"> XXXX</td>
                <td width="75px"> XXXX</td>
                <td width="100px"> XXXX </td>
                <td width="100px"> XXXX </td>
                <td width="300px"> XXXX </td>
                <td width="300px"> </td>
                <td width="100px"> XXXX </td>
                <td width="100px"> </td>
            </tr> 
4

1 回答 1

1

我要求 HTML 因为isoDate解析器只会在数据采用这种格式时自行设置####/##/##

/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);

shortDate解析器只会在数据看起来像这样##/##/######/##/##

/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s); // from tablesorter v2.0.5

所以要么解析器代码被改变,要么 html 格式被错误地解释;但这并不能解释为什么选项中isoDate的设置headers不起作用。

第一行日期可能无意中具有与其他行不同的格式或某些内联 HTML(即,数字包含在样式跨度中),从而使检测在每列中使用哪个解析器的代码误解了数据。所以这就是为什么我问 HTML 是什么样子的。

我知道您共享了初始化代码,但我想我还应该询问是否还有其他未显示的配置选项正在使用,因为修改textExtraction函数也可能改变数据的处理方式。

于 2012-11-23T13:21:30.547 回答