【问题标题】:Can pagerControls have onclick events?pagerControls 可以有 onclick 事件吗?
【发布时间】:2014-06-19 16:00:00
【问题描述】:

我有一个动态视图,它使用 viewScope 变量汇总屏幕上显示的内容,我希望它重置我的 viewScope 变量。它没有,而且似乎没有执行我放在那里的任何脚本。

<xp:pager partialRefresh="true" id="upperPager"
for="viewRowRepeat" styleClass="tsDynamicViewPager" pageCount="8"
alwaysCalculateLast="true">
<xp:pagerControl id="pagerControl4" type="First">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="viewRowRepeat">
        <xp:this.action><![CDATA[#{javascript:dBar.info("pagerControl4 clicked");
clearColumnTotals();}]]></xp:this.action>
            <xp:this.script><![CDATA[alert("Clicked!");]]></xp:this.script>
        </xp:eventHandler>
    </xp:pagerControl>
    <xp:pagerControl id="pagerControl5" type="Group">
        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:dBar.info("pagerControl5 clicked");
clearColumnTotals();}]]></xp:this.action>
            <xp:this.script><![CDATA[alert("Clicked!");]]></xp:this.script>
        </xp:eventHandler>
    </xp:pagerControl>
    <xp:pagerControl id="pagerControl6" type="Last">
        <xp:eventHandler event="onclick"
            submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:dBar.info("pagerControl6 clicked");
clearColumnTotals();}]]></xp:this.action>
            <xp:this.script><![CDATA[alert("Clicked!");]]></xp:this.script>
        </xp:eventHandler>
    </xp:pagerControl>
</xp:pager>

不用说,我不知道我是否编码不正确,或者 pagerControls 是否不应该有任何 onclick 事件。我知道 IDE 不会为寻呼机本身显示一个。

【问题讨论】:

  • 如果你不能让 onlick 工作,那么也许你可以制作一个客户端脚本,在单击寻呼机按钮时执行 ajax 调用,以便定向到更新 viewScope 变量的 XAgent 和重定向回当前页面。看起来很麻烦,但如果这是你需要做的......
  • 但是,问题是,我无法为 pagercontrol 运行 onclick。 CSJS 或 SSJS 中没有任何内容。
  • 如果分页按钮有一个与之关联的类,您可以使用 jQuery。例如,把它作为一个类为“pleaseWork”的跨度,然后在 jQuery 中,选择所有类为 .pleaseWork 的跨度内的所有按钮(你可以使用 jQuery 选择器获得非常细化),然后有一个运行你的 ajax 的函数单击按钮时调用。在页面加载时加载它。它必须是可能的,因为一旦出现在页面上,所有控件都只是 DOM 的一部分。提示:首先通过在单击时创建一个警报(“你点击了我”)消息来使其工作,然后处理 ajax 片段。

标签: xpages pager


【解决方案1】:

将您的寻呼机控件与 Dojo onclick 事件连接,以在单击寻呼机控件时执行客户端代码:

<xp:eventHandler
    event="onClientLoad"
    submit="false">
    <xp:this.script><![CDATA[
        dojo.query(".xspFirst").forEach(function(node) {
          dojo.connect(node, "onclick", function() { 
               alert("First clicked");
          });
        });
        dojo.query(".xspGroup").forEach(function(node) {
          dojo.connect(node, "onclick", function() { 
               alert("Group clicked");
          });
        });
        ...
    ]]>
    </xp:this.script>
</xp:eventHandler>

为分页控件呈现的类是“xsp”+ 类型,如“xspFirst”、“xspGroup”和“xspLast”。使用此类获取控件。

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2012-01-24
    • 2015-06-20
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多