功能区按钮值规则取决于状态代码值

时间:2014-05-15 09:42:02

标签: dynamics-crm-2011 dynamics-crm ribbon dynamics-crm-2013

我添加了一个新的自定义按钮来引用表单功能区。只有状态代码处于活动状态时才会显示此按钮(Value: 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中删除规则,则该按钮始终可见。

我也尝试过使用“活跃”字样。作为值(如此post底部所示,结果相同。

根据状态代码定义规则的技巧是什么?或者我错过了什么?

5 个答案:

答案 0 :(得分:3)

尝试使用状态文本值(“打开”,“草稿”,“活动”等)而不是数字值。我有一个与状态原因相似的案例。希望它会有所帮助!

答案 1 :(得分:1)

我无法找到任何可以验证的内容,但显示规则似乎在命令栏中存在问题。我有更好的运气使用启用规则,而那些实际上就像你期望显示规则在命令栏中行动一样。换句话说,如果禁用命令栏中的按钮,则不显示该按钮。您可以在MSDN documentation

中阅读相关内容

答案 2 :(得分:0)

我认为您的问题是 EnableRules 为空。 但是,你手动修改了吗? 如果是这样,use CRM 2011 Visual Ribbon Editor,这个工具几乎可以为你完成所有工作。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

只需添加简单的.js脚本即可更新功能区。功能区仅在页面加载时更新。这就是为什么你的按钮变得总是不可见的。这是代码示例:

function refreshRibbonOnChange()
{
   Xrm.Page.ui.refreshRibbon();
}

然后添加网络资源并将其附加到按钮点击。简单!

相关问题