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

Dotnetnuke 如何在DNN模块中插入jQuery和CSS?,dotnetnuke,Dotnetnuke,我已经看过文特里安和我们社区的人。我似乎不能让它工作,所以这里是我的模块在一个简单的样子 View.aspx <%@ Control language="C#" Inherits="KDMC.Modules.kdmc_userTraderListView.View" AutoEventWireup="false" CodeBehind="View.ascx.cs" %> <%@ Register TagPrefix="dnn" Namespace="DotNetNuke.We

我已经看过文特里安和我们社区的人。我似乎不能让它工作,所以这里是我的模块在一个简单的样子

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>


它需要被实例化。如何做到这一点?

我猜问题可能是由于各种脚本和内容的相对位置造成的。如果您使用FireFox,您可以点击Ctrl-Shift-J打开错误控制台,当您刷新页面时,它将显示Javascript错误

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

谢谢,先生!我在阳光下尽了一切努力来让它发挥作用。我最终做的不是将脚本标记留在ascx中,而是将其作为一个文件保存到自身中,然后在其他include文件上使用
ForceProvider=“DnnPageHeaderProvider”
,并使用
ForceProvider=“DNNFORBOTTOMPROVIDER
在新的javascript文件上。在您提供了关于
ForceProvider
属性的提示之后,我对它的用法进行了一些挖掘,并找到了一个示例。我希望这有助于其他人的到来!很高兴我能帮忙。你没有理由要把它添加到一个单独的文件中,它实际上只是关于位置,你应该能够通过把脚本放在文件的末尾来实现所需的位置。
<script type="text/javascript">
    $('#datatable').dataTable();
</script>