【问题标题】:Enhanced Grid Sorting Not working properly增强的网格排序无法正常工作
【发布时间】:2013-09-30 07:06:31
【问题描述】:

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

这是我的代码:

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

【问题讨论】:

  • 请发表您目前所写的内容。
  • 代码:-
  • 你遇到什么样的错误?
  • 我没有收到任何错误。但是在基于具有特殊字符和字母数字值的列之一进行排序时,其排序方式很奇怪。它在最初的 15-20 行工作正常,但再次被破坏,然后再工作到其余的行。
  • 在没有看到实际结果的情况下很难说出“以奇怪的方式排序”是什么意思。请告诉我们。

标签: datagrid dojo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    信不信由你,您的排序实际上工作正常。网格中的行根据字符串排序进行排序,这取决于字符串的值,由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 4242 42 8557 45 50;所以他们再次井井有条。

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

    【讨论】:

    • 对不起,我不同意你的看法。如果你看到第三张图片,你会发现“A P P O I N T M E N T ..”出现在“9/20/2013 ..”之后。但是“APPOINTMENT”行应该在初始开始时与其他行在开始时出现“A”而不是在“9/20/2013”​​标记之后出现。这就是它被扭曲的地方。如果我能说清楚,请告诉我。
    • 排序在技术上仍然是正确的 - 'A' = 65 > 57 = '9'.
    • 我猜你没有明白我的意思。让我再尝试一次。对主题列进行排序后,初始行很好。他们从 Apple 开始,然后是 Boy,然后是 Columbus 等……然后是测试电子邮件的那一行……直到现在都很好……然后是你的 ***……然后是 13 年 9 月 20 日……然后再次出现“约会”的行......然后有“棒球”的行......然后是“挑战”......等等。你不认为“约会”行应该在“苹果”之后。 .... AND BASEBALL 应该在 BOY 之后出现......但它被数字和特殊字符打断了。希望我这次很清楚.. 抱歉,如果没有。
    • 我仍然不确定您在哪里发现了问题。排序区分大小写,从您上面的评论来看,您的示例从“Apple”到“APPIE”变化很大。 'A' = 65 != 97 = 'a'。请保持冷静。我知道您很沮丧,但我们会根据我们掌握的信息尽最大努力提供帮助。
    • 对不起,你真的没有得到这个问题。或者我无法让你清楚。我上传了一个新的pdf。下面的链接.. slideshare.net/slideshow/embed_code/26544418 如果您看到第一行排序良好,那么一旦 *** 9/20/2013 到来,它就会变坏。然后再次得到很好的排序.. 滚动 pdf 并缩放它并告诉我这是否根据主题列对您进行了排序。
    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2020-12-14
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多