0

我正在使用增强网格,我最近发现在对任何列进行排序时(通过单击标题的列名),如果该列的结果具有特殊字符"|,*/\-&等,则排序会中断并且无法处理完整的结果。 .. 任何帮助,将不胜感激。

这是我的代码:

<body>
    <div style="width: 100%; height: 400px;">
        <div dojoType="dojo.data.ItemFileReadStore" 
            jsId="appsStoreForGrid" data="storeData" typeMap="_typeMap">
        </div>

        <div id="grid" data-dojo-type="dojox.grid.EnhancedGrid" 
            data-dojo-props="store:appsStoreForGrid, structure:'layoutApps',
            errorMessage:'No Data Found', 
            plugins: { 
                filter: { closeFilterbarButton: true, ruleCount: 5 }, 
                pagination: { pageSizes: ['5', '25', '50', '100'], 
                    description: true, sizeSwitch: true, pageStepper: true, 
                    gotoButton: true, maxPageStep: 8, position: 'top'}}">
        </div>
    </div>
</body>
4

2 回答 2

1

问题是由于内容前面的空格导致排序错误。这些空间在浏览器中是不可见的,但是在查看页面源时我开始了解它。最后只修剪 Db 中的空格,现在问题已解决。谢谢。

于 2013-10-01T13:54:59.507 回答
0

信不信由你,您的排序实际上工作正常。网格中的行根据字符串排序进行排序,这取决于字符串的值,由ASCII 代码给出。因此,让我们看一下您的第一张图片的一部分:

TEST Email to Check references
Test 1 |ID:1141|

|这种情况下,与排序无关。当我们将这些字符串转换为它们的 ASCII 代码(十进制)时,我们得到这个(截断为前 10 个字符):

T   E   S   T       E   m   a   i   l
84  69  83  84  32  69  109 97  105 108 
    |                                 <-- 69 < 101, so this is correct
84  101 115 116 32  49  32  124 73  68
T   e   s   t       1       |   I   D

所以你可以看到排序函数是如何根据值组织这些字符串的。同样,在图片 #2 中:

*** UPDATE-COMPLETED ***
**UPDATE-CMPLETE**
9-20-13-Loads and Mtys

为此,我们只需要查看前几个字符:*****U和,它们分别具有、和9-20的值;所以他们再次井井有条。42 42 4242 42 8557 45 50

如果您想忽略特殊字符,最好的办法是一般不允许它们出现在数据网格中,因此您需要将它们解析出来。

于 2013-09-25T15:11:35.707 回答