1

我看过Ventrian的这篇文章和我们社区的另一篇文章。我似乎无法让它工作,所以简而言之,这就是我的模块的样子。

查看.aspx

<%@ Control language="C#" Inherits="KDMC.Modules.kdmc_userTraderListView.View" AutoEventWireup="false"  CodeBehind="View.ascx.cs" %>
<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %> 
<asp:Panel ID="Panel1" runat="server">                        
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemDataBound="traderWorks">
        <HeaderTemplate>
            <table id="datatable">
            <thead>
            <tr>
            <th>Some heading</th>                
            </tr>
            </thead>
        </HeaderTemplate>

        <ItemTemplate>
            <tr>
            <td><%# Eval("SomeData")%></td>                
            </tr>
        </ItemTemplate>

        <FooterTemplate>

        </FooterTemplate>

    </asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SiteSqlServer2 %>" SelectCommand="SELECT Whatever from WHerever"></asp:SqlDataSource>

<script type="text/javascript">
    $('#datatable').dataTable();
</script>

<dnn:DnnCssInclude runat="server" FilePath="~/DesktopModules/<modulename>/media/css/jquery.dataTables.css" />
<dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/<modulename>/media/js/jquery.js" />
<dnn:DnnJsInclude runat="server" FilePath="~/DesktopModules/<modulename>/media/js/jquery.dataTables.min.js" />
</asp:Panel>

根据文章以及我曾经将css和jquery插入皮肤文件的任何时候,这应该可以工作!是什么导致 DNN 在我的模块中看不到它?

已编辑

我想我看到了这个问题。我认为 DNN 正在查看使用<dnn:DnnCssInclude runat="server> or <dnn:DnnJsInclude runat="server>标签插入的文件。模块看不到

<script type="text/javascript">
    $('#datatable').dataTable();
</script>

我该如何解决?根据我们社区的这篇文章,它需要被实例化。我该怎么做呢?

4

1 回答 1

2

我的猜测是问题可能是由于各种脚本和内容的相对位置。如果您使用 FireFox,您可以按 Ctrl-Shift-J 来调出错误控制台,当您刷新页面时它会显示 Javascript 错误。

每当您在 DNN(或 ASP.NET)中处理 Javascript 时,查看呈现的代码(通过在页面上查看源代码 (Ctrl-U))很重要,这样您就可以看到实际生成的内容代码。假设您使用的是最新版本的 DNN(6.x 或更高版本),您不需要实例化 jQuery,但您可以通过查看源代码并验证是否包含 jQuery 来验证这一点。您应该验证您的 JsIncludes 是否在您的 "$('#datatable').dataTable();" 之前呈现 脚本,并且数据表对象也被呈现在该脚本之上。如果没有,您可以通过在调用中指定提供程序来指定 JsInclude 位的位置(即 ForceProvider="DnnPageHeaderProvider")

于 2013-07-11T16:35:55.547 回答