在部分刷新时更改按钮样式-class
Change a buttons style-class on partial refresh
我在嵌套在另一个面板 (id="panelView") 中的面板 (id="panelButtons") 中有一系列按钮。目前每个按钮上的 onclick 事件设置一个 sessionScope 变量并在 panelView 上进行部分刷新。按钮如下所示:
<xp:button value="Home" id="button1">
<xp:this.styleClass>
<![CDATA[#{javascript:(sessionScope.ssSelectedView == "ccHome.xsp") ? "btn btn-primary btn-xs" : "btn btn-default btn-xs"}]]></xp:this.styleClass>
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panelView">
<xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedView = "ccHome.xsp"}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
 
 
<xp:button value="Products" id="button2">
<xp:this.styleClass>
<![CDATA[#{javascript:(sessionScope.ssSelectedView == "ccProducts.xsp") ? "btn btn-primary btn-xs" : "btn btn-default btn-xs"}]]></xp:this.styleClass>
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panelView">
<xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedView = "ccProducts.xsp"}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
所以我想做的是,如果设置了 sessionScope,则将按钮显示为 btn-primary,否则使用默认值。当页面加载时,sessionScope 设置为 "ccHome.xsp",但如果我单击 Products 按钮,sessionScope 会更改,但按钮显示不会。因此,样式 class 似乎仅在页面加载时计算。 JavaScript 动态地设置为 运行 如此短的完全刷新有没有办法强制样式 class 在部分刷新时更改。
编辑:
将 onClick 设置为执行完整更新,它也不会更改按钮上的样式 class。
它不起作用的原因是 bootstrap 主题覆盖了您的 styleClass,您需要禁用按钮上的主题
<xp:button value="Home" id="button1" disableTheme="true">
我在嵌套在另一个面板 (id="panelView") 中的面板 (id="panelButtons") 中有一系列按钮。目前每个按钮上的 onclick 事件设置一个 sessionScope 变量并在 panelView 上进行部分刷新。按钮如下所示:
<xp:button value="Home" id="button1">
<xp:this.styleClass>
<![CDATA[#{javascript:(sessionScope.ssSelectedView == "ccHome.xsp") ? "btn btn-primary btn-xs" : "btn btn-default btn-xs"}]]></xp:this.styleClass>
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panelView">
<xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedView = "ccHome.xsp"}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
 
 
<xp:button value="Products" id="button2">
<xp:this.styleClass>
<![CDATA[#{javascript:(sessionScope.ssSelectedView == "ccProducts.xsp") ? "btn btn-primary btn-xs" : "btn btn-default btn-xs"}]]></xp:this.styleClass>
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panelView">
<xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedView = "ccProducts.xsp"}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
所以我想做的是,如果设置了 sessionScope,则将按钮显示为 btn-primary,否则使用默认值。当页面加载时,sessionScope 设置为 "ccHome.xsp",但如果我单击 Products 按钮,sessionScope 会更改,但按钮显示不会。因此,样式 class 似乎仅在页面加载时计算。 JavaScript 动态地设置为 运行 如此短的完全刷新有没有办法强制样式 class 在部分刷新时更改。
编辑: 将 onClick 设置为执行完整更新,它也不会更改按钮上的样式 class。
它不起作用的原因是 bootstrap 主题覆盖了您的 styleClass,您需要禁用按钮上的主题
<xp:button value="Home" id="button1" disableTheme="true">