技术开发 频道

通过程序动态修改DNN模块标题

ITPUB 技术文章1、 什么是模块的标题?

   在DNN Skin&Container开发的官方文档中定义了标题,如下图
 




    在对应的Container 包HTML文件中(DNN会将HTML“编译”为ascx文件来使用,基本上是将[XXX]类型的标签替换成DNN定义的Control),是这样的
 

<TD background="tile_body_top.jpg" align="middle" noWrap>[SOLPARTACTIONS]</TD>

<TD background="tile_body_top.jpg" align="middle" width="100%" nowrap>[TITLE]</TD>

<TD background="tile_body_top.jpg" align="middle" noWrap>[VISIBILITY]</TD>

<TD vAlign="top" noWrap align="right" width="20" colspan="2">

<IMG src="body_corner_right.jpg" height="42" width="20" border="0"></TD>


2、 通常如何设置标题?

   标题一般在管理模式下,加入模块的同时设定。或者在模块的Setting页面进行修改。可是有时我们会要求能够通过程序动态修改模块的标题。
 

 

3、 如何访问标题?

   经过摸索,这样是可以访问了:

Label lbTitle = ((Label)(this.ContainerControl.FindControl("dnnTITLE").Controls[0]));

lbTitle.Text = objBookItem.Title;

其中我们知道,this(模块)是继承自PortalModuleBase,而PortalModuleBase中定义了:

public Control ContainerControl { get; }

这个就是我们的容器对象了。
 


 

它只是一个普通的UserControl而已。它包含了若干控件,其中有dnn:TITLE它的ID为“dnnTITLE”,我们通过FindControl可以找到它。

 

<%@ Control language="vb" CodeBehind="~/admin/Containers/container.vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Containers.Container" %>

<%@ Register TagPrefix="dnn" TagName="ACTIONS" Src="~/Admin/Containers/SolPartActions.ascx" %>

<%@ Register TagPrefix="dnn" TagName="ICON" Src="~/Admin/Containers/Icon.ascx" %>

<%@ Register TagPrefix="dnn" TagName="TITLE" Src="~/Admin/Containers/Title.ascx" %>

<%@ Register TagPrefix="dnn" TagName="VISIBILITY" Src="~/Admin/Containers/Visibility.ascx" %>

<TD valign="middle" nowrap><dnn:ACTIONS runat="server" id="dnnACTIONS" /></TD>

<TD valign="middle" nowrap><dnn:ICON runat="server" id="dnnICON" /></TD>

<TD valign="middle" width="100%" nowrap>

<dnn:TITLE runat="server" id="dnnTITLE" />

</TD>

 

0
相关文章