2015-01-29 3 views
0

현재 BI 도구 플랫폼 인 Microstrategy에서 작업 중이며 상황에 맞는 메뉴에서 자동 클릭을 시도하고 있습니다. 어떤 이유로 나는 코드와 함께 자동으로 클릭을 트리거 할 수 없습니다. 나는 내가 이것을 통과 할 수있는 방법으로 "this"의 가치를 이해할 수있는 도움을 얻을 수 있기를 희망했다. 궁극적 인 목표는 제거 할 grid_K47과 페이지 새로 고침을 전달하는 것입니다. 실생활에서 menuClick을 클릭하면 아래에서 원하는 페이지를 새로 고칠 수 있습니다.Microstrategy + Javascript에서 컨텍스트 메뉴 클릭

내가 아는 것은 여기에 있습니다.

마우스 오른쪽 버튼으로 클릭하기 전의 개체가 테이블에 있으며이를 표시합니다. 이것이 모두 MSTR 렌더링 코드라는 점에 유의하십시오.

<td id="grid_K47_0_1_1_1" class="c4_K47" dpt="1" dg="TRUE" ds="Area" oid="4216C7074826CF50BC81B8BDEFB99603" style="cursor: pointer; opacity: 0.5;" frmid="CCFBE2A5EADB4F50941FB879CCF1721C" title="Area. Drag object to perform pivot. Right-click for more options" frmlist="ID45C11FA478E745FEA08D781CEA190FE520DESCCCFBE2A5EADB4F50941FB879CCF1721C1-1" or="V" sty="ATT" fe="h1;4216C7074826CF50BC81B8BDEFB99603;UK & Ireland" ax="1" frmname="DESC" oty="12" mx="1" cx="[11,15,16,17,18,19,20,4,26,4,4,29,30,31,32,33,36,37,38]">Area</td> 

그런 다음 상황에 맞는 메뉴가 끌어와이 부분을

<tr id="cm1r10" height="18" style="cursor: pointer;" li="var bone = microstrategy.findBone(microstrategy.activeCXMenu); bone.processContextMenus('x');;" onclick="menuClick(this, 'grid_K47_0_GM1');" onmouseout="menuOff(this);" onmouseover="clearTimeout(oSubCTimer); menuOn(this); hideContextSubMenus(1);" ac="true" class="menu-row"> 

지금까지 테스트 한 다른 값을 가지고에 내가 마우스 오른쪽 버튼을 클릭 곳입니다 "이"즉 menuclick 함수에서. 여기 내

최신 HTML

<div style="background-color:#E1E1E1;"> <input type="button" name="RemoveGrid" id="RemoveGrid" value="Submit" ></div> 

자바 스크립트

<script> 

$(document).ready(function() { 
$("#RemoveGrid").on("click", function (e) { 

RemoveGridjs(); 

}); 
}); 
</script> 
<script> 
function RemoveGridjs() { 
var bone = microstrategy.findBone(microstrategy.activeCXMenu); 
bone.processContextMenus('x');; 
menuClick('#grid_K47_0_1_1_1', 'grid_K47_0_GM1'); 
} 
</script> 
+0

왜 런타임에 속성 그리드에서 제거해야합니까? 어떤 특별한 이유? 어쩌면 당신은 다른 방식으로 이것을 할 수 있습니다. – mucio

+0

비즈니스는 실시간 그리드 편집을 원합니다. 시나리오에는 시장 및 도시가있는 표가 있다고 가정 해 보겠습니다. 그러나 그들은 시장을 국가로 바꾸고 싶다. 기대는 드롭 다운을 사용하여 City에 대해 다른 상태를 선택하고 대시 보드보기에서 제출 버튼을 누르는 것입니다. – JuniorFlip

+0

이 같은 것을 Java 또는 .Net SDK를 사용하여보다 효과적으로 수행 할 수 있다고 생각합니다.한 번 닮은 것을 보았습니다. 그리고 Java로 끝났습니다. – mucio

답변

0

가 나는 티지에 대한 몇 가지 자바 스크립트 사용자 정의를했고,이 일을하는 방법을 알아낼 꽤 악몽이었다. MicroStrategy는 회사로서 자바 스크립트 사용자 정의를 지원하지 않기 때문에 문서를 찾을 수 없으며 온라인에서도 찾을 수 있습니다.

사용중인 MicroStrategy 버전과 사용중인 시각화 (빠른 모드와 다르게 작동 함)가 확실하지 않습니다. 어쨌든 내 제안은이 객체에 대한 아이디어를 가질 수 있도록 this 로그에 onclick을 수정하는 것입니다. 그. 그런

뭔가 :

jQuery('#cm1r10').click(
    function(){ 
       console.log(this) 
    } 
); 

문제를 해결하는 또 다른 방법은 메뉴 항목에 관련된 기능을 실행하려고하는 것이 아니라 그 위에 버튼 클릭을 시뮬레이션 할 수 없습니다.

jQuery("#RemoveGrid").on("click", 
         function (e) { 
           jQuery('#cm1r10').trigger('click'); 
         } 
); 

상황에 맞는 메뉴가 화면에 표시되지 않는 경우이 방법이 작동하는지 잘 모르겠지만 사용해 볼만한 가치가 있다고 생각합니다.

어쨌든 난 당신이 다른 사람의 코드를 사용자 정의 할 때 대신 $jQuery를 사용하는 것이 좋습니다

+0

콘솔 로그를 만들려고 할 때 '특성 사용'오류 만 제공합니다. nodeValue 특성은 더 이상 사용되지 않습니다. 값을 대신 사용하십시오. 로그를 다시 쓰지 않습니다. 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 불러 오면 마우스 오른쪽 단추로 어떻게 할 수 있습니까? – JuniorFlip

+0

나는 jQuery를 (문서) .bind ("의 ContextMenu", 기능 (예)를 마우스 오른쪽 버튼으로 클릭에 콘솔 로그를 할 수 있었다 { 을 console.log ('안녕하세요') \t을 console.log (이) }); 하지만 URL이 필요 없습니다. 필요한 항목이 없습니다. – JuniorFlip

+0

조금 파고했습니다. 나는'MenuClickOld = MenuClick' 함수를 만들고 나서'function menuClick (oMenuItem, sMenu) {console.log (oMenuItem); console.log (sMenu); menuClickOld (oMenuItem, sMenu)}'를 호출합니다. 이것은 이전 버전을 새로운 버전으로 대체 한 다음 메뉴 클릭 ('menuClickOld ($ # ''# cm1r10 ') [0],'grid_K48_0_GM1 ')')을 호출 할 수 있었지만 상황 메뉴가있는 경우에만 작동합니다 . 나는 더 지저분 해지면서 더 지저분 해졌다. – mucio