XPages将事件附加到数据视图中页面导航器的部分刷新视图、事件、页面、部分

2023-09-03 08:52:20 作者:當時只道是尋常

在previous post中,我询问了如何将引导类添加到数据视图。答案是将类添加到脚本块中的"able.dataview"中。创建表后,将应用类,一切正常。

但当我使用寻呼机时,格式就消失了。我在分页浏览器上使用部分刷新来仅刷新数据表,但这样做意味着引导类不会应用于该表。

高级图表制作功能,怎么少得了这款BI

我认为我需要添加一个事件处理程序,该事件处理程序将附加到DataView的刷新操作以添加类。但是,我无法使事件处理程序工作。

我的事件处理程序代码如下。

<xp:eventHandler refreshMode="partial" submit="true"
            id="applyCSS" refreshId="dataView1" event="parialRefresh"
            value="what" loaded="false">
            <xp:this.binding><![CDATA[#{javascript:"pager1"}]]></xp:this.binding>
            <xp:this.action><![CDATA[#{javascript:("table.dataview").addClass("table-striped table-hover table-bordered table-condensed")}]]></xp:this.action>
        </xp:eventHandler>

Oliver,呈现的=FALSE只是一个打字错误-我正在测试一些东西,需要暂时取消它。

奥利弗和保罗

昨天晚上,我的部分恢复工作了。

我遇到了this post by Mark Roden,它解释了如何执行此操作。有两种不同的方法可以做到这一点,一种更少,一种更有效。我使用的代码如下。

<xp:scriptBlock id="scriptBlock3">
            <xp:this.value><![CDATA[$('.dataView1PanelWrapper').on("DOMNodeInserted", function(){
    $("table.dataview").addClass("table-striped table-hover table-bordered table-condensed")
})]]></xp:this.value>
        </xp:scriptBlock>
然而,在XPages中不是几乎总是有一个吗?然而,我在视图中有一些可排序的列,单击排序会出现同样的问题!我丢了班级作业!

所以现在我也必须拦截该事件,对吗?

担心这将在哪里结束。我不喜欢DOM操作的想法,只有当我有这样的想法时才想这样做。

我从使用一个简单的视图开始。它工作得很好,但由于某种原因,寻呼机中的间隔被搞乱了。我发现,通过将寻呼机移出视图本身,我能够解决对齐问题。我认为只使用视图会更好,因为我可以直接分配类,而不必执行所有这些操作。然而,知道如何为未来做这件事是非常好的。

这是您的建议吗?

================================================== 我已经使用输出脚本尝试了Paul Withers的建议。这适用于初始页面加载,但不适用于对数据视图的任何其他更改-当页面导航器触发时,或排序或任何其他更改。我快到了,但还没找到雪茄。有什么建议吗?

<xp:scriptBlock id="scriptBlock5" loaded="false">
        <xp:this.value><![CDATA[dojo.require("dojo.behavior");

Behavior = {
    ".dataview": {
        found: function(node) {

            dojo.addClass(node,".table-striped table-hover table-bordered table-condensed");
            //node.addClass("table-striped table-hover table-bordered table-condensed");
        }
    }
}

dojo.ready(function() {
    dojo.behavior.add(Behavior);
    dojo.behavior.apply();
});

//Make sure that future pagers are also straightened out
dojo.subscribe("partialrefresh-complete", null, function(method, form, refreshId) {
    dojo.behavior.apply();
});]]></xp:this.value>
    </xp:scriptBlock>

推荐答案

使用xe:DataView的一个方面中的工作代码移动现有的xp:ScriptBlock。然后,样式将在初始加载和所有部分刷新时应用。