未捕获的类型错误:无法读取 JQuery DataTable 未定义的属性“mData”

Posted

技术标签:

【中文标题】未捕获的类型错误:无法读取 JQuery DataTable 未定义的属性“mData”【英文标题】:Uncaught TypeError: Cannot read property 'mData' of undefined for JQuery DataTable 【发布时间】:2016-04-10 08:54:54 【问题描述】:

我已将我的数据表绑定到我在 ASP.Net 中的网格视图。我尝试使用 jQuery dataTable 在我的 gridview 中显示搜索和排序选项,但数据表给我一个错误。

错误是: Uncaught TypeError: Cannot read property 'mData' of undefined" 这是错误。

我使用了以下代码:

function pageLoad(sender, args) 
    $('#grdProducts').DataTable(
        $(document).ready(function () 
            $('.dataTable').dataTable();
        )
    );

<asp:GridView ID="grdProducts" runat="server" AutoGenerateColumns="false" CssClass="table table-hover dataTable">
    <Columns>
         <asp:TemplateField Visible="false">
            <ItemTemplate>
                <asp:Label ID="lblProductID" runat="server"                        Text='<%# Eval("ProductID")%>' />
            </ItemTemplate>
        </asp:TemplateField>
        <%--<asp:BoundField DataField="GroupName" HeaderText="Group Name" />--%>
        <asp:BoundField DataField="BrandID" HeaderText="Brand" />
        <asp:BoundField DataField="ProductName" HeaderText="Product" />
        <asp:BoundField DataField="ShortCode" HeaderText="Code " />
        <asp:BoundField DataField="Price" HeaderText="Price" />
        <asp:TemplateField HeaderText="Update">
            <ItemTemplate>
                <asp:Button ID="btnUpdate" runat="server" Text="Update" class="btn btn-info" OnClick="btnUpdate_OnClick" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

【问题讨论】:

【参考方案1】:

默认情况下,ASP GridView 将所有内容保留在标记下,并且不会在 下呈现网格标题,这将导致“mData”错误。

为此,请在将数据绑定到 GridView 后使用以下行:

GridViewName.HeaderRow.TableSection = TableRowSection.TableHeader;

【讨论】:

我尝试过的所有东西,但这条线在我的 gridview 上对我有用。【参考方案2】:

改用下面的代码:

$(document).ready(function ()
    $('#grdProducts').DataTable();
);

【讨论】:

我以前用过。使用它,我没有收到任何错误,但是我想要的搜索选项,gridview 中的排序选项确实来了。 $('#grdProducts').DataTable( $(document).ready(function () $('.dataTable').dataTable( "aoColumnDefs": [ 'bSortable': true, 'aTargets': [4 , 5, 6, 7] ] ); ));我添加了我在网上找到的这段代码。使用后我得到:未捕获的类型错误:无法设置未定义此错误的属性“_DT_CellIndex”。 @AtiburRahman 我遇到了Cannot set property '_DT_CellIndex' of undefined,因为我的插值表有一些columnspan &lt;td&gt;s!!!我的 DataTables 是 DOM 发起的(不是 javascript 或 AJAX 数据,而是 DOM 发起的)。也许这就是您遇到的问题,只是告诉您可能要花几个小时。【参考方案3】:
  function pageLoad() 

  var table = $('#grdProducts').DataTable
  (
       //Here you can define other things using Var table
  );    
 

您可以在页面加载或行数据绑定时添加它

grdProducts.UseAccessibleHeader = true;
//adds <thead> and <tbody> elements
grdProducts.HeaderRow.TableSection =
TableRowSection.TableHeader;

【讨论】:

以上是关于未捕获的类型错误:无法读取 JQuery DataTable 未定义的属性“mData”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法使用 jQuery 验证读取未定义的属性“调用”

未捕获的类型错误:无法读取未定义的属性“msie” - jQuery 工具

未捕获的类型错误:无法读取 jquery 滑块中未定义的属性“addClass”

datatables jquery - 未捕获的类型错误:无法读取未定义的属性“显示”

jquery-ui.js:8056 未捕获类型错误:无法读取未定义的属性“左侧”

未捕获的类型错误:无法读取 JQuery DataTable 未定义的属性“mData”