Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从datatables.js中的数据属性获取行_Javascript_Datatables - Fatal编程技术网

Javascript 从datatables.js中的数据属性获取行

Javascript 从datatables.js中的数据属性获取行,javascript,datatables,Javascript,Datatables,我正在努力寻找正确的方法来做到这一点。基本上,我有一个id值数组,对应于表中选择的行。为了构造这个列表,我使用以下代码this.options.ajaxId是访问传递到表的数据对象中我的Id值的键 this.getRowData(target)[this.options.ajaxId] 其中mygetRowData函数为: getRowData: function (HTMLrow) { return this.dataTable.row(HTMLrow).data(); }, 这非

我正在努力寻找正确的方法来做到这一点。基本上,我有一个id值数组,对应于表中选择的行。为了构造这个列表,我使用以下代码
this.options.ajaxId
是访问传递到表的数据对象中我的Id值的键

this.getRowData(target)[this.options.ajaxId]
其中my
getRowData
函数为:

getRowData: function (HTMLrow) {
    return this.dataTable.row(HTMLrow).data();
},
这非常有效,但接下来的一步就是在通过分页、排序或搜索重新绘制表时重新选择正确的行。我的计划是在ID中循环,找到与该ID值对应的表行,但我找不到一个函数来输入键值搜索对并返回html行。我是这么想的

this.dataTable.findRow( key, value );
// then my usage would be the following:
var that = this;
_.each(this.selectedList, function (id) {
    var row = that.dataTable.findRow( that.options.ajaxId, id );
    // code to select the row
});
我还没有写,但我知道我可以循环浏览每一行,获取该行的数据,并对照我要查找的内容进行检查,但是如果用户正在查看100行,并且只有一个选择,我希望避免这种情况

有什么见解吗

谢谢

解决方案#1

如果行ID存储在其中一个字段中,则可以使用以下代码基于行ID定位和高亮显示行

//包含ID的列的索引
var colIdIndex=0;
//行ID列表
var rowIds=['2','4','6'];
//查找在所需列中具有ID的行的索引
var rowIndexes=table.rows().eq(0).filter(函数(rowIdx){
return($.inArray(table.cell(rowIdx,colIdIndex.data(),rowIds)!=-1)
真的吗
:假;
});    
//根据找到的行索引数组选择行
表.行(行索引)
.nodes()
。至$()
.addClass(“选定”);
有关更多详细信息,请参见API方法

请注意,此方法仅适用于客户端处理模式

演示

有关代码和演示,请参阅

解决方案#2

在客户端和服务器端处理模式下都可以使用的另一种方法是使用回调

例如:

// Index of column containing IDs
var colIdIndex = 0;

// List of row IDs
var rowIds = ['2', '4', '6'];

var table = $('#example').DataTable({
    createdRow: function( row, data, dataIndex ) {
        if ( $.inArray(data[colIdIndex], rowIds) !== -1) {
            $(row).addClass('selected');
        }
    }        
});
演示


有关代码和演示,请参阅。

Hmm感谢您提供的提示,这确实有助于保留分页等功能,不幸的是,我已手动添加了选择机制,因此它不包含在本文档中feature@davidkonrad我从来没有声称自己是这方面的专家……你那势利无礼的评论是如何给形势带来建设性的影响的?我只是随便提了个建议而已。试图帮助别人是否值得粗鲁无知的评论?获得一个gripSo提供一个有效的解决方案,不需要神秘的评论。我从来不是一个不说我错了的人。你有机会尝试一下密码吗?太棒了,你确实回答了:)@davidkonrad,在你提到我会回答这个问题后,我无法通过。