技术开发 频道

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

   从ascx文件中可以看出dnnTitle也是一个Control,如何更改名称呢?

   看源文件~/Admin/Containers/Title.ascx

   Title中包含一个DNNLabelEdit:

 

<%@ Control Language="vb" AutoEventWireup="false" Inherits="DotNetNuke.UI.Containers.Title" CodeFile="Title.ascx.vb" %>

<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.UI.WebControls" Assembly="DotNetNuke.WebControls" %>

<dnn:DNNLabelEdit id="lblTitle" runat="server" cssclass="Head" enableviewstate="False" MouseOverCssClass="LabelEditOverClass"

LabelEditCssClass="LabelEditTextClass" EditEnabled="True"></dnn:DNNLabelEdit>


而DNNLabelEdit是继承自Label的

 

 

更为精确的修改代码应该是:

  

Control title = (Control)this.ContainerControl.FindControl("dnnTITLE");

if (title != null)

{

Label lbTitle = title.FindControl("lblTitle") as as Label;

if (lbTitle != null)

{

lbTitle.Text = objTYDMItem.Title;

}

}

 

4、 标题中的例外

   但是,DNN中还支持[TITLE:1]的写法,在由HTML编译为ascx时,DNN将该对象的ID改为了“dnnTITLE1”,所以有时你在

Control title = (Control)this.ContainerControl.FindControl("dnnTITLE");时返回null。

    所有我们的程序被迫改写为

 

foreach (Control ctl in this.ContainerControl.Controls)

{

if (ctl.ID == null)

continue;

if (Regex.IsMatch(ctl.ID, "dnnTITLE"))

{

lbTitle = title.FindControl("lblTitle") as Label;

break;

}

}

 

0
相关文章