数据表fnrender函数

时间:2012-09-05 20:05:31

标签: jquery jquery-datatables

我正在使用令人敬畏的datatables jquery插件,但是我在渲染表时遇到了一些问题。

我有以下代码:

$(document).ready(function() {
var jsonEmp="";
$.getJSON("../lib/violation_select_emp.php", function(json) {
    jsonEmp = json;
}); 

var oTable;
oTable = $('#uview').dataTable({
    "bStateSave":true,
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "../lib/server_processing_emp_list.php",
    "sPaginationType": "four_button",
    "aaSorting": [[ 0, "asc" ]],
    "aoColumns": [
    {
        "fnRender": function ( oObj ) {
         var empID=oObj.aData[4];
         var empName=oObj.aData[5];
         return "<a href='viewEmployer.php?empID="+empID+"'>"+empName+"</a>";
    }
    },
    {
        "fnRender": function ( oObj ) {
            var numAlerts=jsonEmp.length;
            var i=0;
            var alerts=0;
            while(i<numAlerts){
            if(jsonEmp[i]==oObj.aData[3]){
                alerts++;
            }
            i++;
    }
    return alerts;
    }
});
});

当我加载页面时,fnrender列中没有显示任何内容,但是当我点击下一个paginition按钮,然后点击上一个分页按钮时,我会看到我希望看到的信息。

我的理论是桌子需要刷新,但是当我这样做时,会导致同样的事情发生。

不知道该怎么做,希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

你有一个$ .getJSON的回调函数。在回调函数中,为jsonEmp变量赋值,该变量用“”初始化。您的代码不会等待您发送请求的网站的响应,您的Javascript代码低于$ .getJSON将不会等待页面响应,导致在您分配现实生活之前使用jsonEmp的错误它的价值。

建议:

$(document).ready(function() {
var jsonEmp="";
var oTable;
$.getJSON("../lib/violation_select_emp.php", function(json) {
    jsonEmp = json;
oTable = $('#uview').dataTable({
    "bStateSave":true,
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "../lib/server_processing_emp_list.php",
    "sPaginationType": "four_button",
    "aaSorting": [[ 0, "asc" ]],
    "aoColumns": [
    {
        "fnRender": function ( oObj ) {
         var empID=oObj.aData[4];
         var empName=oObj.aData[5];
         return "<a href='viewEmployer.php?empID="+empID+"'>"+empName+"</a>";
    }
    },
    {
        "fnRender": function ( oObj ) {
            var numAlerts=jsonEmp.length;
            var i=0;
            var alerts=0;
            while(i<numAlerts){
            if(jsonEmp[i]==oObj.aData[3]){
                alerts++;
            }
            i++;
    }
    return alerts;
    }
});
}); 

});

正如您所看到的,我已将对象的初始化放入回调函数中,我仍然认为您的问题来自初始化,但我没有测试代码。让我知道我的建议的结果。

祝你好运!