javascript - 在 xp :table control 上启动数据表

标签 javascript datatables xpages

在 XPage 上我有一个表组件:

<xp:table id="tblProposals">

我想通过脚本 block 组件在其上启动数据表插件:

<xp:scriptBlock id="scriptInitProposals">
                                <xp:this.value><![CDATA[$(document).ready(function() {

    var tableId = x$("#{id:tblProposals}");
    $("#" + tableId.get(0).id).DataTable();
initProposals("#" + tableId.get(0).id,"getProposals");
    $('table th:first').removeClass('sorting_asc');
});]]></xp:this.value>
                            </xp:scriptBlock>

我的 JS 函数开始如下:

function initProposals(id, method) {
alert(id)
var db = $(id).DataTable();
db.destroy();
localStorage.clear();

var table = $(id).DataTable({

    "pageLength": pageLength,
    "ajax": "api.xsp/reports?method=" + method,...

当我选择带有 id 的普通 html 表时(例如,运行脚本 block :

<xp:scriptBlock id="scriptInitProposals">
                                <xp:this.value><![CDATA[$(document).ready(function() {
    $('#tblProposals').DataTable();
    initProposals("#tblProposals","proposals");
    $('table th:first').removeClass('sorting_asc');
});]]></xp:this.value>
                            </xp:scriptBlock>

表格生成得很好。

数据表插件似乎对动态 ID 不太满意,还是我遗漏了什么??

最佳答案

如果我没记错的话,x$("#{id:tblProposals}") 得到的不是 id,而是 DOM jQuery 包装的 DOM 对象。

然后,您重复 DataTable() 调用两次:在调用 initProposals 之前以及在其中。我想你可以删除一个。

此时您可能想要更改传递给 initProposals 的内容,id 或对象,或其中任何一个,然后在方法中处理它。 你可以这样做:

<xp:scriptBlock value="$(document).ready(function() {
        initProposals('#{id:tblProposals}', 'getProposals');
        $('table th:first').removeClass('sorting_asc');
    });"/>

然后稍微修改一下函数:

function initProposals(id, method) {
    var element = $(document.getElementById(id));
    var table = element.DataTable();
    table.destroy();
    localStorage.clear();

    element.DataTable({

关于javascript - 在 xp :table control 上启动数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49193971/

相关文章:

xpages - 无法在 XPage OneUI 的操作栏中使用 SSJS 放置操作?

javascript - 客户端计算不起作用

javascript - 单击按钮后如何删除特定的 <li>?

javascript - 有和没有 return 语句的函数有区别吗?

javascript - MVC 中的函数可以跨 Controller 交互吗?

javascript - 如何从数据表的行中获取元素?

javascript - 如何在同一个 Angular Controller 上使用两个 Angular 数据表?

javascript - JS 变量可以在 Chrome 控制台中看到,但没有明确定义

jquery - 数据表宽度问题

java - 防止访问 Domino 服务器中的本地文件系统