扩展行的详细信息时,DataTables- aoData为null

时间:2013-02-09 02:21:31

标签: jquery-datatables

我正在使用向下钻取的DataTable here

数据表存在于手风琴中。用户可以通过单击选择类别,它会展开以显示与该类别相关的数据表。当用户单击类别时,将调用函数initTable。

DataTables doc说要使用此代码来考虑页面上的多个dataTable,但我无法让它工作。

$(document).ready(function() {
    $('.dataTable').dataTable();
} );

我所做的不是使用“#example”,而是将其替换为“#”+类别,99%有效。我可以点击一个类别,向下钻取以查看一行中的其他数据,切换到新类别,执行相同的操作。

什么行不通 - 如果我单击一个类别,然后关闭该类别或转到另一个类别然后返回到第一个 - 扩展一行然后抛出错误“aoData”为null或不是对象。以下3张图片显示了我在说什么。请注意,第3个图像细节行不显示。

我无法插入图片,但我发布了here来展示我正在谈论的内容。

这是调用创建表的initTable函数。我在创建新表之前使用bDestroy来销毁现有表。

任何帮助将不胜感激!

function initTable(category, facility)
{
  if (gsCategory == "")
    gsCategory = category;
  else if (gsCategory == category)
    gbToggle = !gbToggle;
  else
    gbToggle = false;

  gsCategory = category;

  if (gbToggle == false)
  {
    gsCategory = category;

    var select = document.forms[0].selFacility;
    var facility = select.options[select.selectedIndex].value;

    document.body.style.cursor = 'wait';

    var patJson = getJson(facility, category);
    var anOpen = [];
    var sImageUrl = "../images/";
    makeTable(category);

    document.body.style.cursor = 'default';

    var oTable = $('#'+category).dataTable( {
      "bProcessing": false,
      "bDestroy": true,
      "aaData": patJson,
      "bAutoWidth": false,
      "aoColumns": [
        {
         "mDataProp": null, 
         "sClass": "control center", 
         "sDefaultContent": '<img src="'+sImageUrl+'details_open.png'+'">',
         "sWidth": "5%"
        },
        { "mDataProp": "S_PAT_NAME", "sWidth": "30%" },
        { "mDataProp": "S_AGE", "sWidth": "15%"},
        { "mDataProp": "S_FIN", "sWidth": "30%"},
        { "mDataProp": "S_ROOM_BED", "sWidth": "20%" }
      ]
    } );

    $('#'+category+' td.control').live( 'click', function () 
    {
      var nTr = this.parentNode;
      var i = $.inArray( nTr, anOpen );

      if ( i === -1 ) 
      {
        $('img', this).attr( 'src', sImageUrl+"details_close.png" );
        var nDetailsRow = oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
        $('div.innerDetails', nDetailsRow).slideDown();
        anOpen.push( nTr );
      }
      else 
      {
        $('img', this).attr( 'src', sImageUrl+"details_open.png" );
        $('div.innerDetails', $(nTr).next()[0]).slideUp( function () 
        {
          oTable.fnClose( nTr );
          anOpen.splice( i, 1 );
        } );
      }
    } );
  }
}
function fnFormatDetails( oTable, nTr )
{
  var oData = oTable.fnGetData( nTr );
  var sOut = 
     '<div class="innerDetails">'+
        '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
           '<tr><td>Trigger Order:</td><td>'+oData.S_TRIGGER_MED+'</td></tr>'+
           '<tr><td>Allergies:</td><td>'+oData.S_ALLERGIES+'</td></tr>'
        '</table>'+
     '</div>';
  return sOut;
}

0 个答案:

没有答案