javascript를 사용하여 CRM 2011 양식의 시스템 리본 = AddNew를 조건부로 비활성화하려는 경우 즉, statusCode가 X 또는 Y이면 리본을 비활성화합니다. 어떻게해야합니까?CRM 2011에서 시스템 리본 해제
리본의 클래스 이름을 비활성으로 변경하기 위해 리본의 ID를 얻으려고했지만 리본이 비동기 적으로로드되기 때문에 Null을 얻었습니다!
javascript를 사용하여 CRM 2011 양식의 시스템 리본 = AddNew를 조건부로 비활성화하려는 경우 즉, statusCode가 X 또는 Y이면 리본을 비활성화합니다. 어떻게해야합니까?CRM 2011에서 시스템 리본 해제
리본의 클래스 이름을 비활성으로 변경하기 위해 리본의 ID를 얻으려고했지만 리본이 비동기 적으로로드되기 때문에 Null을 얻었습니다!
가 안와르의 대답에 확장하려면이 링크입니다 따르십시오 것이지만, 만약 그렇게된다면 없을 것 리본 DOM을 해킹 할 필요가 있습니다. 아래는 귀하가 취할 수있는 몇 가지 단계입니다.
1) Create a solution with the Application Ribbon included.
2) SDK에 응용 프로그램 리본의 샘플 리본을 찾거나 또는 솔루션이 SDK에 포함 된 사용하여 직접 구축 할 수 있습니다.
\ SDK \ 리소스 \ exportedribbonxml
\ SDK \에 SampleCode \ CS \ 클라이언트 \ 리본 \ exportribbonxml \ exportedribbonxml
3) 응용 프로그램 리본 템플릿에서 찾기 제어 당신은이 경우 엔 엔티티 서브 그리드의 AddNew
버튼에 관심이 있다고 생각합니다. 이 컨트롤의 용도를 CustomAction
에 변경하고 CustomAction
의 위치를 용도 변경하려는 컨트롤과 같은 이름으로 만듭니다.
<CustomAction Id="YourOrg.SubGrid.{!EntityLogicalName}.AddNewStandard"
Location="Mscrm.SubGrid.{!EntityLogicalName}.AddNewStandard">
<CommandUIDefinition>
<Button Id="Mscrm.SubGrid.{!EntityLogicalName}.AddNewStandard"
Command="Mscrm.AddNewRecordFromSubGridStandard" Sequence="20"
LabelText="$Resources(EntityDisplayName):Ribbon.SubGrid.AddNew"
Alt="$Resources(EntityDisplayName):Ribbon.SubGrid.AddNew"
Image16by16="/_imgs/ribbon/NewRecord_16.png"
Image32by32="/_imgs/ribbon/newrecord32.png" TemplateAlias="o1"
ToolTipTitle="$Resources(EntityDisplayName):Mscrm_SubGrid_EntityLogicalName_MainTab_Management_AddNewStandard_ToolTipTitle"
ToolTipDescription="$Resources(EntityDisplayName):Mscrm_SubGrid_EntityLogicalName_MainTab_Management_AddNewStandard_ToolTipDescription" />
</CommandUIDefinition>
</CustomAction>
4) 응용 프로그램 리본 템플릿에이 버튼의 명령의 정의를 찾아 새로운 CommandDefinition
의 기초로 정확한 정의를 사용하여,이 경우 (사용자 정의 규칙에 새로운 추가 EnableRule
). 안와르의 대답이 들어 오면 여기
<CommandDefinition Id="Mscrm.AddNewRecordFromSubGridStandard">
<EnableRules>
<EnableRule Id="Mscrm.AppendToPrimary" />
<EnableRule Id="Mscrm.EntityFormIsEnabled" />
<EnableRule Id="YourOrg.DisableNewStuff" /> <!--your custom rule-->
</EnableRules>
<DisplayRules>
<DisplayRule Id="Mscrm.ShowForOneToManyGrids" />
<DisplayRule Id="Mscrm.AppendToPrimary" />
<DisplayRule Id="Mscrm.CreateSelectedEntityPermission" />
<DisplayRule Id="Mscrm.AppendSelected" />
<DisplayRule Id="Mscrm.HideAddNewForChildEntities" />
</DisplayRules>
<Actions>
<JavaScriptFunction FunctionName="Mscrm.GridRibbonActions.addNewFromSubGridStandard"
Library="/_static/_common/scripts/RibbonActions.js">
<CrmParameter Value="SelectedEntityTypeCode" />
<CrmParameter Value="PrimaryEntityTypeCode" />
<CrmParameter Value="FirstPrimaryItemId" />
<CrmParameter Value="PrimaryControl" />
</JavaScriptFunction>
</Actions>
</CommandDefinition>
5)이다 : 모두 OrRule
과 ValueRule
를 사용하여 개체의 statuscode
의 확인하기 위해 EnableRule
을 정의합니다. 연결된 데모는 새 리본 버튼과 관련이 있지만 용도 변경된 리본 컨트롤에도 동일한 규칙이 적용됩니다.
완료되면 리본을 모두 설정해야합니다. 내가 얼마나 익숙한 지 잘 모르겠다. RibbonXml
, 나는 또한 꽤 많은 도움이되는 Microsoft has some comprehensive walkthroughs을 언급 할 것이다. 당신은 요소 범위의 ID를 얻을 수 있습니다
var statusVal = Xrm.Page.getAttribute("statuscode").getValue();
if (statusVal==4 || statusVal==6) {
//Disable delete button
var x =top.document.getElementById("invoice|NoRelationship|Form|Mscrm.Form.invoice.Delete-Medium");
x.style.display='none';
, 당신은에서 숨길 :
이 문서는 귀하가 찾고있는 것을 정확히 설명합니다.
는 일이 점점의 열쇠는 가로와 AddNew
리본 버튼의 기능의 용도를 변경 How To Use "ValueRule" and "OrRule" in Ribbon Customizations - CRM 2011
또한 Anwar에게 감사드립니다. – user1160771
이 난 상태 코드 형태의 온로드에 따라, 송장 양식에서 삭제 버튼을 숨기는 방법입니다 페이지의 출처.
'top.document.querySelector ("li [title * = '버튼 이름'] ')' – KingRider
대단히 고맙습니다 :-) – user1160771