Hello StackOverflow社区,
我在Force.com开发,并且在Visualforce和Apex方面很强大。我在Javascript方面不强,但在必要时往往会过去。在最近的一个项目中,我正在努力学习一些非常基础的东西,我认为这是寻求帮助的最佳场所。
我利用apex:pageblocktable(s)来为用户提供“可用操作”。基本上页面加载,系统查询我的外部静态“动作”表,并将当前记录中的数据与动作表记录进行比较。完成后,将向用户显示结果:可用操作。
我遇到了一个问题。由于用户选择了一般操作,有些操作无法传递?id =作为参数。要解决这个问题,我需要在我的javascript公式中使用简单的IF CONDITION。下面我发布了我的代码......你的想法?
提前致谢!
当前代码:
<apex:pageBlock mode="edit" title="Other Actions">
<apex:pageBlockTable value="{!OtherActions}" var="action">
<apex:column>
<a href="javascript:sforce.console.openPrimaryTab(null, 'https://na15.salesforce.com/apex/{!action.URL__c}?actionname={!action.Name}', true, null, null, null);">{!action.Name}</a>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
MY ATTEMPT:
以下代码有效。但是,由于某种原因,用户选择的操作就好像它始终是列表中的最后一个操作。例如,如果加载了三个操作,则选择第二个。系统的行为就像您选择了第3个动作...总是
<apex:pageBlock mode="edit" title="Other Actions">
<apex:pageBlockTable value="{!OtherActions}" var="action">
<apex:column>
<a href="#" onclick="MyFunction();return false;">{!action.Name}</a>
<script type="text/javascript">
function MyFunction() {
if({!action.Name} == 'Test'){
sforce.console.openPrimaryTab(null , 'https://na15.salesforce.com/apex/{!action.URL__c}?id={!action.id}&actionname={!action.Name}', true, ' ', null, null);
}
else{
sforce.console.openPrimaryTab(null , 'https://na15.salesforce.com/apex/{!action.URL__c}?actionname={!action.Name}', true, ' ', null, null);
}
}
</script>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
答案 0 :(得分:0)
我认为你打算写
if('{!action.Name}' == 'Test')
而不是
if({!action.Name} == 'Test')
第一个差异是比较两个字符串,而第二个比较变量和字符串(例如,如果变量Test未定义,if(Test ==&#39; Test&#39;)将返回false)
答案 1 :(得分:0)
我明白了。我不得不将参数传递给Java函数。这是最终的VisualForce / Java Combo
<强> VF 强>
<apex:column >
<A HREF="#" onClick="openAction('{!action.External__c}', '{!action.ID}', '{!action.Name}', '{!action.URL__c}');return false">{!action.Name}</A>
</apex:column>
<强>的java 强>
<script type="text/javascript">
var TabID;
var previousOnload = window.onload;
window.onload = function() {
if (previousOnload) {
previousOnload();
}
setTimeout('setTabTitle()', '500');
setTimeout('getTabID()', '500');
}
function setTabTitle() {
sforce.console.setTabTitle('{!Member__c.Name}');
}
function getTabID() {
sforce.console.getEnclosingPrimaryTabId(setTabID);
}
var setTabID = function setTabID(result) {
TabID = result.id;
}
function openAction(external, id, name, url) {
if(external == 'true'){
sforce.console.openPrimaryTab(TabID, 'https://na15.salesforce.com/apex/' + url, true, ' ');
}
else{
sforce.console.openPrimaryTab(null, 'https://na15.salesforce.com/apex/' + url + '?id=' + id, true, ' ');
}
}
</script>