简体   繁体   English

从 jQuery 数据表隐藏列中获取值

[英]Get the values from jQuery Datatable hidden columns

I have a jQuery datatable populated with info from a db' table and I have hidden two columns, now I need to get the value from the two hidden columns but I couldn´t, this is the code of my datatable and had set the property visible: false for the two last columns我有一个 jQuery 数据表,其中填充了来自 db' 表的信息,我隐藏了两列,现在我需要从这两个隐藏列中获取值,但我不能,这是我的数据表的代码并设置了属性可见:最后两列为假

    $('#myTable').DataTable({
        searching: false,
        paging: true,
        responsive: true,
        ordering: false,
        bInfo: false,
        bLengthChange: false,
        processing: true,
        info: false,
        deferRender: true,
        orderMulti: false,
        "ajax": {
            "url": "../home/CargarTabla?id=" + noDocumento,
            "type": "GET",
            "datatype": "json"
        },
        "columns": [
                { "data": "nombres", "autoWidth": true, "orderable": false },
                { "data": "apellidos", "autoWidth": true, "orderable": false },
                { "data": "dui", "autoWidth": true, "orderable": false },
                { "data": "numero_isss", "autoWidth": true, "orderable": false },
                { "data": "cargo_participante", "autoWidth": true, "orderable": false },
                { "data": "genero", "autoWidth": true, "orderable": false, "visible": false },
                { "data": "nivel_puesto", "autoWidth": true, "orderable": false, "visible": false },
                { "defaultContent": " <a href='#' id='select'>Modificar</a>  ", "autoWidth": true, "orderable": false }
        ],
        "oLanguage": {
            "sEmptyTable": "No hay registros disponibles",
            "sInfo": " _TOTAL_ registros. Mostrando de (_START_ a _END_)",
            "sLoadingRecords": "Por favor espera - Cargando...",
            "sSearch": "Filtro:",
            "sLengthMenu": "Mostrar _MENU_",
            "oPaginate": {
                "sLast": "Última página",
                "sFirst": "Primera",
                "sNext": "Siguiente",
                "sPrevious": "Anterior"
            },
            "oAria": {
                "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
                "sSortDescending": ": Activar para ordenar la columna de manera descendente"
            }
        }
    });

and this is the way I get the value from the columns that are visible to the user, it works just fine:这是我从用户可见的列中获取值的方式,它工作得很好:

$("#myTable").on('click', '#select', function (e) {
            e.preventDefault();  
            var currentRow = $(this).closest("tr");
            var Nombres = currentRow.find("td:eq(0)").text();
            var Apellidos = currentRow.find("td:eq(1)").text();
            var DUI = currentRow.find("td:eq(2)").text();
            var ISSS = currentRow.find("td:eq(3)").text();
            var Cargo = currentRow.find("td:eq(4)").text();

            alert(Nombres + Apellidos + DUI +ISSS+ Cargo);
        });

But how I get the values from the hidden columns?但是我如何从隐藏列中获取值呢? I have tried this in the $("#myTable").on('click', '#select', function (e) with no success我在$("#myTable").on('click', '#select', function (e)中试过这个但没有成功

 alert(table.row(this).data()[5]);
 alert(table.row(this).data()[6]);

other way with no success其他方式没有成功

var row = $(this).parents("td")[0];
var pos = oTable.fnGetPosition(row);
var Genero = oTable.fnGetData(pos[5])["idGenero"];

and last最后

  var arr = $('#myTable').dataTable().fnGetData($(currentRow));
            var Genero = arr[5]; 
            var Nivel = arr[6];

could you please help me to get the values from the hidden columns with the script code showed?你能帮我用显示的脚本代码从隐藏列中获取值吗? BTW this is the HTML code顺便说一句,这是 HTML 代码

<div class="table-responsive">
    <table class="table table-striped table-condensed" id="myTable" style="width:100%; margin:0 auto;">
        <thead>
            <tr>
                <th>Nombres</th>
                <th>Apellidos</th>
                <th>DUI</th>
                <th>ISSS</th>
                <th>Cargo</th>
                <th>Sexo</th>
                <th>Nivel</th>
                <th></th>
            </tr>
        </thead>

        <tbody></tbody>
    </table>
</div>

Use the code below:使用下面的代码:

$("#myTable").on('click', '#select', function (e) {
    e.preventDefault();  

    var currentRow = $(this).closest("tr");

    var data = $('#myTable').DataTable().row(currentRow).data();
    console.log(data['genero']);
    console.log(data['nivel_puesto']);

    // ... skipped ...
});

How to get all the td values of the table:如何获取表的所有td值:

var tdItems=[];
$("#myTable tr td").each(function(){
   tdItems.push($(this).text());       
});

They are going to be stored in the array tdItems .它们将存储在数组tdItems

Use jQuery Datatable API functions to get full row data including hide columns -使用 jQuery Datatable API 函数获取包括隐藏列在内的完整行数据 -

  • fnGetPosition获取位置
  • fnGetData获取数据

First get instance of datatable and then execute functions to get complete row data.首先获取数据表的实例,然后执行函数以获取完整的行数据。 For example, you want to get complete row data on clicking on particular row, below code can help inside fnDrawCallback callback function of table -例如,您想在单击特定行时获得完整的行数据,下面的代码可以在表的 fnDrawCallback 回调函数中提供帮助 -

"fnDrawCallback": function (oSettings) {
    var oTable = $('#example').dataTable();
    $('#example tbody tr').on('click', 'tr', function () {            
        var position = oTable.fnGetPosition(this);
        var full_row = oTable.fnGetData(position);
        console.log(full_row);  // will print full row data including hide columns
    });              
 }

Thanks谢谢

I know your question is old, but if someone still have problems, try this:我知道你的问题很老,但如果有人仍然有问题,试试这个:

let table = $('#myTable').DataTable();
let row = table.row(0);
let genero = row.data()['genero'];
let nivel_puesto = row.data()['nivel_puesto'];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM