增强的网格排序无法正常工作

时间:2013-09-24 21:18:44

标签: datagrid dojo

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

这是我的代码:

<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>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

信不信由你,你的排序实际上是正常的。网格中的行根据字符串排序进行排序,这取决于ASCII codes给出的字符串值。那么让我们来看看你的第一张图片的一部分:

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

为此,我们只需要查看前几个字符:*****U9-20,其值为42 42 42,{{1} }和42 42 85分别;所以他们再次井然有序。

如果你想忽略特殊字符,最好的办法是不要在数据网格中允许它们,所以你需要解析它们。