VF PageBlockTable w/Javascript和条件行为

VF PageBlockTable w/Javascript和条件行为,javascript,salesforce,visualforce,force.com,salesforce-service-cloud,Javascript,Salesforce,Visualforce,Force.com,Salesforce Service Cloud,大家好,我的社区 我在Force.com上发展,在视觉力和Apex方面很强。我对Javascript不是很在行,但在必要的时候我会勉强应付。在最近的一个项目中,我正在努力解决一些非常基本的问题,我认为这是寻求帮助的最好地方 我利用apex:pageblocktable向用户驱动“可用操作”。基本上,页面加载时,系统查询外部静态“action”表,并将当前记录中的数据与action表记录进行比较。完成后,将向用户显示结果:可用操作 我遇到了一个问题。由于用户选择了一般操作,有些操作无法将?id=作

大家好,我的社区

我在Force.com上发展,在视觉力和Apex方面很强。我对Javascript不是很在行,但在必要的时候我会勉强应付。在最近的一个项目中,我正在努力解决一些非常基本的问题,我认为这是寻求帮助的最好地方

我利用apex:pageblocktable向用户驱动“可用操作”。基本上,页面加载时,系统查询外部静态“action”表,并将当前记录中的数据与action表记录进行比较。完成后,将向用户显示结果:可用操作

我遇到了一个问题。由于用户选择了一般操作,有些操作无法将?id=作为参数传递。为了解决这个问题,我需要在javascript公式中使用一个简单的IF条件。下面我已经发布了我的代码。。。你的想法

提前谢谢

当前代码:

<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>

我的尝试:

<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>
下面的代码可以工作。但是,由于某些原因,用户选择的操作的行为似乎始终是列表中的最后一个操作。例如,如果加载三个动作,然后选择第二个动作。系统将表现为您选择了第三个操作…始终

<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>

函数MyFunction(){
如果({!action.Name}=='Test'){
sforce.console.openPrimaryTab(null,'https://na15.salesforce.com/apex/{!action.URL__c}?id={!action.id}&actionname={!action.Name}',true',null,null);
}
否则{
sforce.console.openPrimaryTab(null,'https://na15.salesforce.com/apex/{!action.URL__c}?actionname={!action.Name}',true',null,null);
}        
}

我想你是想写

if('{!action.Name}' == 'Test')
而不是

if({!action.Name} == 'Test')

第一个将比较两个字符串,而第二个将变量与字符串进行比较(例如,如果变量Test未定义,if(Test='Test')将返回false)

我算出了。我必须将参数传递给Java函数。下面是最后一个VisualForce/Java组合

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>

塔比德变种;
var-previousOnload=window.onload;
window.onload=函数(){
如果(以前的加载){
上一次加载();
}               
setTimeout('setTabTitle()','500');
setTimeout('getTabID()','500');
}
函数setTabTitle(){
setTabTitle('{!Member__c.Name}');
}
函数getTabID(){
sforce.console.getEnclosuringPrimaryTabid(setTabID);
}
var setTabID=函数setTabID(结果){
TabID=result.id;
}
函数openAction(外部、id、名称、url){
如果(外部=='true'){
sforce.console.openPrimaryTab(TabID,'https://na15.salesforce.com/apex/“+url,true,”);
}
否则{
sforce.console.openPrimaryTab(null,'https://na15.salesforce.com/apex/“+url+”?id=”+id,true“”);
}
}