状态码值确定的功能区按钮值规则

3

我在报价单中添加了一个新的自定义按钮到功能区。该按钮应该只在状态码为激活时出现(值:1)。

我创建了以下CommandDefinition:

<CommandDefinition Id="mySolution.quote.Form.MyButton.Command">
    <EnableRules />
    <DisplayRules>
        <DisplayRule Id="mySolution.QuoteIsActive" />
    </DisplayRules>
    <Actions>
        <JavaScriptFunction FunctionName="myFunction" Library="$webresource:new_myLibrary" />
    </Actions>
</CommandDefinition>

还有以下DisplayRule:

<DisplayRule Id="mySolution.QuoteIsActive">
    <ValueRule Field="statecode" Value="1" Default="true" />
</DisplayRule>

但是如果我使用这个DisplayRule,我的按钮永远不会出现。如果我从CommandDefinition中删除规则,按钮就始终可见。
我还尝试使用“Active”作为值(如此文章底部所示),但结果相同。
如何定义一个根据statecode状态的规则?或者我漏掉了什么?

你解决了这个问题吗?我遇到了类似的问题,我注意到有一个OptionSetRule(https://msdn.microsoft.com/en-us/library/dn481584.aspx),但它标记为仅供内部使用。 - Caleb Bell
5个回答

3

尝试使用状态文本值(“Open”,“Draft”,“Active”等)而不是数字值。我有一个类似的状态原因案例。希望这能帮到你!


1
我找不到任何证明,但显示规则似乎在命令栏中存在问题。我更喜欢使用启用规则,它们实际上像您期望的那样在命令栏中起作用,换句话说,如果命令栏中的按钮被禁用,则不会显示该按钮。您可以在MSDN文档中了解此信息。

0
只需添加简单的 .js 脚本来更新功能区。功能区仅在页面加载时更新。这就是为什么您的按钮始终不可见的原因。以下是代码示例:
function refreshRibbonOnChange()
{
   Xrm.Page.ui.refreshRibbon();
}

然后添加Web资源并将其附加到按钮单击事件。简单!


0

我认为你的问题是Statecode应该是0,而不是1。在statecode和statecodename上执行SQL查询(使用FilteredView)。


0

我认为你的问题是你的 EnableRules 是空的。 然而,你是在手动进行修改吗? 如果是这样,使用CRM 2011可视化Ribbon编辑器,这个工具几乎可以为你完成所有工作。


我认为这不是问题所在。如果我删除显示规则,按钮就会出现。而且我正在手动进行修改。我们使用功能区编辑器的经验不佳。 - Marvin
如果您有一个测试组织,我建议您使用该工具进行测试,并查看Fetch.xml的外观。 - Jorge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接