2012-04-01 80 views
0

我在獲取數據表(http://datatables.net/)以在簡單的jquery對話框中工作時遇到問題。當我點擊一個按鈕打開盒子時,您可以看到數據表大約一秒鐘,然後立即關閉。任何想法都會非常感激。DataTables和jQuery對話框的問題

我的啓動對話框的功能如下所示。在它內部,數據表被初始化。

function launchLocDialog(mydiv) { 
    alert(mydiv); 
    var oTable; 
    var giRedraw = false; 

    $(document).ready(function() { 
     $("#table_id tbody").click(function(event) { 
      $(oTable.fnSettings().aoData).each(function(){ 
       $(this.nTr).removeClass('row_selected'); 
      }); 

      $(event.target.parentNode).addClass('row_selected'); 
     }); 

     oTable = $('#table_id').dataTable({ 
      "aaData": [ /* Reduced data set */ 
       [ "1", "02/22/12"], 
       [ "2", "02/22/12"], 
       [ "3", "02/22/12"], 
       [ "4", "02/22/12"], 
       [ "5", "02/22/12"], 
       [ "6", "02/22/12"], 
       [ "7", "02/22/12"], 
       [ "8", "02/22/12"], 
       [ "9", "02/22/12"], 
       [ "10", "02/22/12"], 
       [ "11", "02/22/12"], 
       [ "12", "02/22/12"], 
      ], 
      "aoColumns": [ 
       { "sTitle": "Number" }, 
       { "sTitle": "Date Start" } 
      ] 
     }); 

     oTable.$('td').click(function() { 
      //var anSelected = fnGetSelected(oTable); 
      var sData = oTable.fnGetData(0,0); 
      //alert('The cell clicked on had the value of '+sData); 
      alert(sData); 

      //$.post('intsum.php', {intsumID: sData}); 

      // window.location = "intsum.php"; 
     }); 

    }); 

    $("#dialog:ui-dialog").dialog("destroy"); 

    $("#dialog").dialog({ 
     modal: true, 
     buttons: { 
      Ok: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 
+0

我會非常高興地推薦你檢查一下slickGrid – 2012-04-02 06:43:09

回答

1

只是尋找到這個設置一些實驗,但是從我的頭頂......你有你的命名函數裏面的文件準備好功能。我還沒有能夠測試它的全部含義,但它通常不是完成的事情。

使用文檔準備好引發需要等待DOM編寫腳本的函數正是需要設置您的oTable;然而,我認爲將它嵌套在一個被調用的命名函數中(在某些時候...該代碼的一部分在示例中不可見)似乎會產生意想不到的後果。

更新:

有幾個古怪的地方,我想在這裏和那裏理順一點(一些額外的括號中的代碼,放錯位置逗號,但大部分可能是由於試圖提供一個簡單的例子),但主要歸結爲時機。

隨着代碼計時或多或少如上,表格不會出現。當然,你必須調用「launchLocDialog()」纔能有希望,但我不認爲它是這樣的(這可能只是從示例中丟失了)。在任何情況下,去掉那個包裝功能部件,並把一切都變成在window.onload或文檔準備功能和表本身似乎工作:

http://live.datatables.net/exinum/4/edit#preview

你沒有看到在文件準備功能因爲JSBin在window onLoad上運行它的代碼,所以它是多餘的。在你的代碼中,你會使用其中的一個。

因此,問題變成:

預期的行爲是什麼?該表是否意味着出現在對話框中?事件在哪裏彈出對話框?在原始的launchLocDialog函數中,你似乎可以傳遞「myDiv」,但我不確定這是什麼角色,因爲它以後沒有被引用。