有没有办法初始化jquery数据表中的细节?

时间:2015-05-14 13:33:36

标签: javascript jquery datatable

我遇到了jquery数据表详细信息初始化的问题。 我需要在页面加载后获取已打开详细信息的表格。

我有以下代码:

  function format(d) {
   return d;
   }
  $(document).ready(function () {

    $.ajax({
        type: "GET",
        dataType: "json",
        url: "/SHOP/Promotions/GenerateDetailsToJson",  //teraz w tym miejscu inicjuję dane do tabel
        success: function (result) {
            SetDetails(result);
        },
        error: function () {
            alert("Wystąpił nieoczekiwany błąd");
        }
    })

    dt = $('#table').DataTable(
        {   
            "aoColumnDefs": [
      { 'bSortable': false, 'aTargets': [0, 6, 7] }
            ]
        }
        );
      dt.on('draw', function () {
        $.each(detailRows, function (i, id) {
            $('#' + id + ' td:first-child').trigger('click');
        });
    });

    $('#table').DataTable();}

     var table_length = $('#table tbody tr').length; //HERE iS PROBLEM 

    var tr = document.getElementsByClassName("details");

    for (var i = 0; i < table_length; i++) {
        var row = dt.row(tr[i]);
        row.child(format(details[i])).show();
    }
      );

问题出在上面代码的最后几行。 这些行需要初始化并打开所有jquery数据表的详细信息,但这些函数不会在时间执行,也不会显示任何内容。 我已经尝试使用超时它更好地工作,但不喜欢想要的和几个令人耳目一新的没有数据 如果你知道任何解决方案,请帮助。

3 个答案:

答案 0 :(得分:0)

您必须等待ajax请求完成。

例如:

$(document).ready(function () {
    $.ajax({
        //...
        success: function (result) {
            SetDetails(result);
            process();
        }
    });

    function process() {
        var table_length = $('#table tbody tr').length;

        var tr = document.getElementsByClassName("details");

        for (var i = 0; i < table_length; i++) {
            var row = dt.row(tr[i]);
            row.child(format(details[i])).show();
        }
    }
});

答案 1 :(得分:0)

1:尝试在数据表代码之前删除ajax调用(可能在ajax调用中有一些错误导致其下面的代码无效)

2:在ajax调用中,我相信url是错误的。

3:是否存在setdetails函数,如果不存在,则代码将给出错误

4:尝试在firefox浏览器中运行你的代码(使用firebug),如果你不知道它,请尝试谷歌搜索firebug,但建议使用firebug(非常有帮助)

答案 2 :(得分:0)

尝试使用$.when.then,以便您可以等待ajax完成,然后执行剩余的初始化,如下所示:

$.when(
$.ajax({
      ....
      ....
})).then(function()
{
    dt = $('#table').DataTable(
        .... 
        ....
    });
    //Other initializations.
});