如何分支复杂网格 UI 中的菜单

Posted

技术标签:

【中文标题】如何分支复杂网格 UI 中的菜单【英文标题】:How to branch a menu that is in a complex grid UI 【发布时间】:2016-07-09 05:04:54 【问题描述】:

我们正在尝试在 movilizer 中创建一个大菜单来支持我们所有的选项,同时我们正在使用网格复杂的 UI 来支持更大的设备。

因为我们使用复杂的网格 UI,我们目前在复杂的网格中有 3 个菜单和 2 个文本字段。但是,我们不能使用菜单分支到按下这些菜单中的按钮后调用的不同 movelet。

<question key="Q003" type="6">
    <answer attributeType="14" 
        key="A003_1" 
        nextQuestionKey="Q407"
        <text>menu1button</text>
    </answer>
    <answer attributeType="72"
        key="A003_5"
        nextQuestionKey="Q004">
        <predefinedValue>X</predefinedValue>
    </answer>
    <complex linearGroupId="Information" gridGroupId="gridMenu" gridHorizontalLayout="false" linearPos="1" gridPosX="0" gridPosY="1" groupTitle="menuGrid"/>
</question>

<question key="Q004" type="6">
    <answer attributeType="14" 
        key="A004_1" 
        nextQuestionKey="Q408"
        <text>menu2button</text>
    </answer>
    <answer attributeType="72"
        key="A004_3"
        nextQuestionKey="Q005">
        <predefinedValue>X</predefinedValue>
    </answer>
    <complex linearGroupId="Information" gridGroupId="gridMenu" gridHorizontalLayout="false" linearPos="2" gridPosX="1" gridPosY="1" groupTitle="menuGrid"/>
</question>

我们代码中的这个示例摘录将抛出一个错误,指出问题 Q003 不允许分支,但是我们需要这些单独的菜单。

有什么办法可以避免这个问题,而不必为每个菜单创建不同的 movelet?​​

提前致谢!

【问题讨论】:

【参考方案1】:

您只能使用 MEL 脚本来实现此目的。 基本思路是:

    您通过 MEL 脚本保存复杂 UI 中所有菜单的选择 复杂 UI 中第一个 Q 中的所有答案都链接到复杂 UI 中的第二个问题 复杂 UI 中第二个 Q 中的所有答案都链接到复杂 UI 的第三个问题...等等 复杂 UI 的最后一个问题链接到 epsilon 屏幕 epsilon 屏幕使用限制来检查不同菜单的选择以相应地分支流程

这可能看起来像这样(简化),Q003:

<question key="Q003" type="6">
<answer key="A003_1"
        nextQuestionKey="Q004">
    <text>menu1button</text>
</answer>
<answer attributeType="72"
        key="A003_DEFAULT"
        nextQuestionKey="Q004">
    <predefinedValue>X</predefinedValue>
</answer>
<onEnterAssignment>
    $local:selections = null;
</onEnterAssignment>                
<onLeaveOkPersistAssignment>
    $local:selections["Q003"] = getQuestionKey();
</onLeaveOkPersistAssignment>
<complex linearGroupId="Information" gridGroupId="gridMenu" gridHorizontalLayout="false" linearPos="1" gridPosX="0" gridPosY="1" groupTitle="menuGrid"/>
</question>

Q004:

<question key="Q004" type="6">
<answer key="A004_1" 
        nextQuestionKey="QEPS">
    <text>menu2button</text>
</answer>
<answer attributeType="72"
        key="A004_DEFAULT"
        nextQuestionKey="QEPS">
    <predefinedValue>X</predefinedValue>
</answer>
<onLeaveOkPersistAssignment>
    $local:selections["Q004"] = getQuestionKey();
</onLeaveOkPersistAssignment>
<complex linearGroupId="Information" gridGroupId="gridMenu" gridHorizontalLayout="false" linearPos="2" gridPosX="1" gridPosY="1" groupTitle="menuGrid"/>
</question>

还有 QEPS(进行分支,非常简化):

<question key="QEPS" type="41">
<answer key="AEPS_1" 
        nextQuestionKey="END"/>
<restriction position="0" nextQuestionKey="Q003">
    <condition>$local:selections["Q003"] != $answer:"A003_DEFAULT" ?OR $local:selections["Q004"] != $answer:"A004_DEFAULT"</condition>
</restriction>
</question>

【讨论】:

以上是关于如何分支复杂网格 UI 中的菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Razor 中使用 Kendo UI?

从下拉列表中选择选项后,Kendo UI Grid 中的下拉菜单显示对象-对象

Extjs 如何使网格列标题菜单选项保留在 Cookies 中(有状态)

如何在 Kendo UI MVC 的网格中设置和获取下拉列表的值?

剑道网格单元模板中的引导下拉菜单

剑道网格自定义列菜单