【问题标题】:QlikView: Disable Element Reorganization in List BoxQlikView:禁用列表框中的元素重组
【发布时间】:2016-04-06 17:38:47
【问题描述】:

我有一个归档的“Day_NAM”(包含一周中的日子的名称)和一个字段“Day_Order”(数字字段,给每一天一个数字(星期一=1,星期二=2等),所以我可以排序那些日子)。 我设法按照我想要的方式对列表框中的日期进行了排序。但是,当我在列表框中进行选择时,日期会改变它们在列表框中的位置。当用户进行选择时,如何使列表框中的元素不改变位置?

QVW 文件链接:FILE-LINK

【问题讨论】:

    标签: qlikview


    【解决方案1】:

    Sort tab 中,如果您有 State = "Auto Ascending",请尝试取消选中它,看看是否有帮助。 //米克

    【讨论】:

    • 不幸的是,它是一样的。还有其他建议吗?
    • 尝试对 Day_Order 的总最小值进行排序,忽略它的选择:在排序中选择:Expression = min({1} Day_Order)。
    • 傻事,如果选中,请确保列表框大小足以容纳列表中的所有项目,否则将覆盖自动升序选项并始终将所选选项移动到顶部
    • @TheBudac:列表框足够大。我上传了 QVW,链接可以在问题中找到。如果您能看一看,我将不胜感激。
    • @mickeger:你也可以看看 QVW 吗?
    【解决方案2】:

    它不起作用的原因是因为在启动部分(脚本开头的变量集语句)您没有将日期名称定义为数据具有的日期名称

    SET DayNames='Mo;Di;Mi;Do;Fr;Sa;So';
    SET LongDayNames='Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;Sonntag';
    

    要使排序工作,您需要使这些值匹配。也就是说,该方法不能 100% 保证工作,因此您可以使用 dual() 函数强制它工作(或者如果您不想更改这些默认值,因为它看起来适用于您的区域设置)为字段中的值分配一个数字,但显示文本。基本上结合了您想要做的两个步骤。

    您的捕获日将如下所示:

    dual(CaptureDay, 
     If(CaptureDay = 'Monday', 1,
        If(CaptureDay = 'Tuesday', 2,
            If(CaptureDay = 'Wednesday', 3,
                If(CaptureDay = 'Thursday', 4,
                    If(CaptureDay = 'Friday', 5,
                        If(CaptureDay = 'Saturday', 6,
                            If(CaptureDay = 'Sunday', 7, 8)
                        )
                    )
                )
            )
        )
     )) as     CaptureDay,
    

    那么您的排序设置应如下所示:

    【讨论】:

    • 当我按照您的建议进行操作时,当我单击元素时,元素不会改变位置。但是,从周一到周日的日子并没有按照正确的顺序排列。
    • 请用新文件替换你的旧文件,我看看能找到什么
    猜你喜欢
    • 2016-08-24
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2018-11-03
    • 2018-04-15
    • 2011-09-21
    • 1970-01-01
    相关资源
    最近更新 更多