2015-01-29 2 views
0

В настоящее время я работаю в Microstrategy, который является платформой инструментов BI, и я пытаюсь сделать автоматический клик из контекстного меню. По какой-то причине я не могу автоматически запускать клик с кодом. Я надеялся, что смогу получить помощь, чтобы выяснить ценность «этого», чтобы я мог пройти через это. Конечная цель - передать любой из 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> 

Javascript

<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

Бизнес хочет иметь возможность редактировать сетку реального времени. сценарий позволяет сказать, что у вас есть сетка с рынком и городом. Но они хотят заменить рынок государством. Ожидается, что вы сможете использовать раскрывающийся список, чтобы выбрать другое состояние для города и нажать кнопку отправки в виде панели. – JuniorFlip

+0

Я думаю, что что-то подобное можно было бы сделать более эффективно с помощью Java или .Net SDK.Я видел что-то подобное один раз, и это было сделано с помощью Java – mucio

ответ

0

Я сделал некоторые JavaScript настройки для MicroStrategy, и это было совсем кошмар, чтобы выяснить, как делать вещи. MicroStrategy, как компания, не поддерживает настройку JavaScript, поэтому для нее нет документации, а также онлайн, которую вы не можете найти.

Я не уверен, какая версия MicroStrategy и какая визуализация вы используете (интерактивная работа отличается от экспресс-режима), в любом случае мое предложение состоит в том, чтобы изменить onclick на log this, чтобы вы могли иметь представление об этом объекте что.

Нечто подобное:

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