“oCol未定义”使用Datatables和jQuery Ui Dialog

时间:2011-06-19 22:16:16

标签: jquery jquery-ui datatables jquery-ui-dialog

我有一个表单,用于搜索注册表。此表单显示jQuery Dialog中的信息,并且在对话框内,我正在使用Datatables(是的,在对话框内部我有一个完整的表)。我用PHP动态生成TR和TD,然后,PHP将字符串粘贴到HTML中。 但是,当显示对话框时,我收到此错误:

  

oCol未定义:        oCol.fnSetData(oData,val);

我在Firefox和Chrome中尝试它并且它是一样的。我也在http://www.datatables.net进行了搜索,并丢弃了一个'格式错误的表'。我不知道我做错了什么。

你能帮我解决这个问题吗?

这是我的JS Block:

        <script type="text/javascript" language="javascript" src="lib/jQuery/jquery-1.6.1.js"></script>
        <script type="text/javascript" language="javascript" src="lib/jQuery Ui/js/jquery-ui-1.8.13.custom.min.js"></script>
        <script type="text/javascript" language="javascript" src="lib/Datatables/DataTables-1.8.0/media/js/jquery.dataTables.js"></script>
        <script type="text/javascript">
            $(document).ready(function (){
                $("#results").dialog({
                    title: "Results",
                    width: 900, 
                    height: 500,
                    open: function(event, ui){
                        $("#tRes").dataTable({
                            "bPaginate": true,
                            "bLengthChange": true,
                            "bFilter": true,
                            "bSort": true,
                            "bInfo": true,
                            "bAutoWidth": true
                        });
                    }
                });
            });
        </script>

这是我的表(使用PHP代码段):

<div id="results">
    <table id="tRes">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>State</th>
                <th>Address</th>
            </tr>
        </thead>
        <tbody>
            <?php 
                echo $rows;
            ?>
        </tbody>
    </table>
</div>

先谢谢。

4 个答案:

答案 0 :(得分:21)

这可能会发生,因为您的表格结构不正确。一定要有thead和tbody。我有这个错误,一旦我添加了thead和tbody它就消失了。我的设置与其他回复中的设置完全不同 - 我不确定为什么这个设置有效,因为它不适合我。

table
  thead
    tr
      th`s
  tbody
    tr`s
      td`s

答案 1 :(得分:8)

您是否尝试过如下设置列:

                    $("#tRes").dataTable({
                        "bPaginate": true,
                        "bLengthChange": true,
                        "bFilter": true,
                        "bSort": true,
                        "bInfo": true,
                        "bAutoWidth": true,
                     "aoColumns": [
                                        null,
                                        null //put as many null values as your columns

                    ]
                    });

如果这仍然无效,你能否发布生成的html? 您可以考虑的另一件事是在document.ready上初始化表,而不仅仅是在打开对话框时,但我认为这不是问题。

答案 2 :(得分:2)

jQuery datatables插件要求<th>标记中的元素数与{{1}中的<thead>元素数相匹配你桌子的标签。

答案 3 :(得分:0)

$( “#TRES”)。dataTable中({                         “bPaginate”:是的,                         “bLengthChange”:是的,                         “bFilter”:是的,                         “bSort”:是的,                         “bInfo”:是的,                         “bAutoWidth”:是的,                     });

从页面中删除此代码并检查文本框设置值的语法,然后它将正常工作。