控制何时在dataTables中的服务器端处理中填充thead和tbody

时间:2011-06-21 14:07:54

标签: jquery datatables

我正在使用DataTables插件来获取和分页我的表使用ajax调用。 我的要求是我只需要对我提取的那些进行排序,即在服务器端提取时进行客户端排序。

为实现这一点,我使用tablesorter和dataTables插件。我的代码看起来像这样 -

$("#ProposalSearchResults").html('<table cellpadding="0" id="proposalsTable" cellspacing="0" border="1 px" class="dataTable tablesorter">');
        $("#proposalsTable").tablesorter();
        $("#proposalsTable").dataTable({
            "bPaginate": true,
            "bJQueryUI": true,
            "bLengthChange": false,
            "bFilter": false,
            "bSort": false,
            "bInfo": true,
            "bAutoWidth": false,
            "bServerSide":true,
            "iDisplayLength": 10,
            "bProcessing": true,
            "sPaginationType": "full_numbers",
            "aoColumns": [
                            {"sTitle" : "Proposal Id"},
                            {"sTitle" : "Release Candidate Id"},
                            {"sTitle" : "Proposal Description"},
                            {"sTitle" : "Application"},
                            {"sTitle" : "Requester"},
                            {"sTitle" : "Proposal Status"},
                            {"sTitle" : "Proposal Creation Date", "sType": "full_date" },
                            {"sTitle" : "Proposal Planned Deployment Date", "sType": "full_date" },
                            {"sTitle" : "Action"}
                        ],
            "sAjaxSource": "/searchProposals",
            "fnServerData": function(sSource, aoData, fnCallback){
                aoData.push({"name" : "searchCriteria", "value" : JSON.stringify(proposalSearchCriteria)});

                $.ajax({
                    "dataType": "json",
                    "type" : "GET",
                    "url" : sSource,
                    "data" : aoData,
                    "success" : function (serviceOutput){
                        fnCallback(serviceOutput.ret);
                        $("#proposalsTable").trigger("update");
                    }
                });
           }
        });

现在问题在于,因为在开始时,没有形成表的thead和tbody,对tablesorter()的调用返回并且未实现客户端排序。 然而,当我首先创建thead和tbody,然后通过ajax填充它时,它可以工作。 我无法解码dataTables的代码,所以不知道哪个方法实际上是在表格中绘制/写入这些tbodies和thead,可以覆盖它以便在其中调用tablesorter。

有人可以帮帮我吗。

1 个答案:

答案 0 :(得分:1)

在调用dataTables()之后,您应该调用$("#proposalsTable").tablesorter();。通过这种方式,数据表可以创建<thead>和所有<th>部分(所有正确的标记等),您可以在其上附加tablesorter事件。 如果您这样做,则没有<th>来附加事件,因此tablesorter()失败。请记住,您只能将事件附加到DOM中存在的元素alredy(好吧,有一些方法可以附加到DOM准备就绪后添加的元素,如jQuery live()但我不认为tablesorter使用它们),在你身上case datatables为表创建标记。