我看过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}},它需要实例化。我该怎么做?
答案 0 :(得分:2)
我的猜测是问题可能是由于各种脚本和内容的相对位置。如果您使用FireFox,可以按Ctrl-Shift-J调出错误控制台,刷新页面时会显示Javascript错误。
无论何时你在DNN(或ASP.NET)中处理Javascript,重要的是查看渲染的代码(通过在页面上执行视图源(Ctrl-U)),这样你就可以看到实际存在的是什么由代码生成。假设您使用的是最新版本的DNN(6.x或更高版本),您不需要实例化jQuery,但您可以通过查看源代码并验证是否包含jQuery来验证它。 您应该验证您的JsIncludes是否在“$('#datatable')之前呈现.dataTable();”脚本以及数据表对象也在该脚本上方呈现。如果没有,您可以通过在调用中指定提供程序来指定JsInclude位的位置(即ForceProvider =“DnnPageHeaderProvider”)