在Microstrategy+Javascript中触发上下文菜单单击

在Microstrategy+Javascript中触发上下文菜单单击,javascript,microstrategy,Javascript,Microstrategy,我目前在Microstrategy工作,Microstrategy是一个BI工具平台,我正在尝试从上下文菜单中进行自动单击。由于某些原因,我无法使用代码自动触发单击。我希望我能得到帮助,弄清楚这件事的价值,这样我就能通过它。最终目标是通过任何要删除的网格和页面刷新。在现实生活中,点击下面的菜单单击,页面就会刷新,这正是我想要它做的 这是我所知道的 单击鼠标右键之前的对象位于表中,并显示该对象。请记住,这是所有MSTR呈现的代码 这是我右键单击的点 <td id="grid_K47_0_1_

我目前在Microstrategy工作,Microstrategy是一个BI工具平台,我正在尝试从上下文菜单中进行自动单击。由于某些原因,我无法使用代码自动触发单击。我希望我能得到帮助,弄清楚这件事的价值,这样我就能通过它。最终目标是通过任何要删除的网格和页面刷新。在现实生活中,点击下面的菜单单击,页面就会刷新,这正是我想要它做的

这是我所知道的

单击鼠标右键之前的对象位于表中,并显示该对象。请记住,这是所有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

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>

我为MicroStrategy做了一些JavaScript定制,弄明白怎么做真是一场噩梦。MicroStrategy作为一家公司,不支持JavaScript定制,所以没有关于它的文档,而且在网上你们也找不到多少

我不确定您使用的MicroStrategy的哪个版本以及哪个可视化与express模式的工作方式不同,无论如何,我的建议是修改onclick来记录这个,这样您就可以了解这个对象是什么

诸如此类:

jQuery('#cm1r10').click(
  function(){
              console.log(this)
  }
);
解决此问题的另一种方法不是尝试运行与菜单项关联的函数,而是模拟单击该菜单项的按钮

jQuery("#RemoveGrid").on("click", 
                         function (e) {
                                jQuery('#cm1r10').trigger('click');
                         }
);
如果上下文菜单没有显示在屏幕上,我不确定这是否有效,但我认为值得一试


无论如何,我建议您在自定义其他人的代码时使用jQuery而不是$,因此,当我尝试执行控制台日志时,它只给出了使用属性的错误,nodeValue属性已被弃用。用价值代替。它没有写回日志。如果我要在右键单击上进行控制台日志以打开上下文菜单,我将如何在右键单击上进行此操作;但是我得到了一个不必要的url,我做了一些挖掘。我创建一个函数MenuClickOld=MenuClick,然后创建函数menuClickoMenuItem,sMenu{console.logoMenuItem;console.logsMenu;menuClickOldoMenuItem,sMenu}。这将旧版本替换为新版本,然后我可以调用菜单单击menuClickOld$'cm1r10'[0],'grid\u K48\u 0\u GM1',但这仅在上下文菜单存在时才有效。我进一步挖掘,它变得非常混乱……我不知道把menuclickold=menuclick放在哪里我有这个代码。jquery.com/jquery.min.js>jQuerydocument.readyfunction{jQuerydocument.bindcontextmenu,function e{menuClickOldjQuery'cml10'[0],'gridk47_0_GM1'};函数menuClickoMenuItem,sMenu{console.logoMenuItem;console.logsMenu;menuClickOldoMenuItem,sMenu;}我把它放在控制台中,看看调用了哪些函数。无论如何,现在我对这个场景有了更好的了解,我建议您进行SDK定制为什么需要在运行时从网格中删除属性?有什么具体原因吗?也许你可以用一种不同的方式来实现这一点——企业希望能够进行实时网格编辑。假设您有一个包含市场和城市的网格。但他们想用国家来取代市场。我们期望能够使用下拉菜单为城市选择另一个州,并在仪表板视图中点击提交按钮。我认为使用Java或.Net SDK可以更有效地完成类似的操作。我曾经看到过类似的东西,它是用Java完成的
jQuery("#RemoveGrid").on("click", 
                         function (e) {
                                jQuery('#cm1r10').trigger('click');
                         }
);