如何在DNN模块中插入jQuery和CSS?

时间:2013-07-11 12:19:17

标签: dotnetnuke

我看过Ventrian的this article和我们社区的another。我似乎无法让它工作,所以这就是我的模块简而言之。

View.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>

我该如何解决这个问题?根据{{​​3}},它需要实例化。我该怎么做?

1 个答案:

答案 0 :(得分:2)

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

无论何时你在DNN(或ASP.NET)中处理Javascript,重要的是查看渲染的代码(通过在页面上执行视图源(Ctrl-U)),这样你就可以看到实际存在的是什么由代码生成。假设您使用的是最新版本的DNN(6.x或更高版本),您不需要实例化jQuery,但您可以通过查看源代码并验证是否包含jQuery来验证它。 您应该验证您的JsIncludes是否在“$('#datatable')之前呈现.dataTable();”脚本以及数据表对象也在该脚本上方呈现。如果没有,您可以通过在调用中指定提供程序来指定JsInclude位的位置(即ForceProvider =“DnnPageHeaderProvider”)