创建模板化用户控件问题。

stning 2010-02-22 02:13:47
<%@ Control language="C#" ClassName="TemplatedUC" %>
<script runat=server>
private ITemplate messageTemplate = null;

[ TemplateContainer(typeof(MessageContainer)) ]
public ITemplate MessageTemplate {
get
{
return messageTemplate;
}
set
{
messageTemplate = value;
}
}

void Page_Init() {
if (messageTemplate != null) {
String[] fruits = {"apple", "orange", "banana", "pineapple" };
for (int i=0; i<4; i++)
{
MessageContainer container = new MessageContainer(i, fruits[i]);
messageTemplate.InstantiateIn(container);
PlaceHolder1.Controls.Add(container);
}
}
}

public class MessageContainer: Control, INamingContainer {
private int m_index;
private String m_message;
internal MessageContainer(int index, String message)
{
m_index = index;
m_message = message;
}
public int Index {
get
{
return m_index;
}
}
public String Message
{
get
{
return m_message;
}
}
}
</script>
<asp:placeholder runat=server id="PlaceHolder1" />


<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc" tagname="TemplateTest"
Src="TemplatedUC.ascx" %>
<html>
<script runat=server>
protected void Page_Load()
{
DataBind();
}

</script>
<head>
<title>Templated User Control Test</title>
</head>
<body>
<h1>Testing Templated User Control</h1>
<form id="Form1" runat=server>
<uc:TemplateTest runat=server>
<MessageTemplate>
Index: <asp:Label runat="server" ID="Label1"
Text='<%# Container.Index %>' />
<br />
Message: <asp:Label runat="server" ID="Label2"
Text='<%# Container.Message %>' />
<hr />
</MessageTemplate>
</uc:TemplateTest>
</form>
</body>
</html>

按照msdn的。http://msdn.microsoft.com/zh-cn/library/36574bf6(VS.80).
就出错。报不具有名为MessageTemplate的公共属性
...全文
83 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
presto1981 2010-11-25
  • 打赏
  • 举报
回复
是不是用户控件路径出错了呢

<%@ Register TagPrefix="EHR" TagName="Contact" Src="~/patients/usercontrols/ucPatientInfo.ascx" %>
<%@ Register TagPrefix="ERH" TagName="PatientSubTab" Src="usercontrols/ucPatientSubTab.ascx" %>

下面的就可能出错
stning 2010-02-22
  • 打赏
  • 举报
回复
引用 9 楼 wlovew 的回复:
更正
引用 8 楼 wlovew 的回复:试了试.结果如下在设计界面显示:usercontrol不具有messagetemplate公共属性.运行后可以显示.
确实是这样。不知道为什么在设计界面的时候就会说是出错。很是郁闷。想不明白~
wlovew 2010-02-22
  • 打赏
  • 举报
回复
更正
引用 8 楼 wlovew 的回复:
试了试.结果如下
在设计界面显示:usercontrol不具有messagetemplate公共属性.运行后可以显示.
wlovew 2010-02-22
  • 打赏
  • 举报
回复
试了试.结果如下
在设计界面显示没有显示usercontrol不具有messagetemplate公共属性.运行后可以显示.
stning 2010-02-22
  • 打赏
  • 举报
回复
up。。。。。。。。。。。。。。。。。。
stning 2010-02-22
  • 打赏
  • 举报
回复
up。。。。。。。。。。。。。。。。。。。
stning 2010-02-22
  • 打赏
  • 举报
回复
引用 3 楼 freeflying1222 的回复:
我试过了,没问题呀!

第一段代码,要放在名为TemplatedUC.ascx的用户控件文件里;
第二段代码,是放在aspx页面的;

检查一下。两端代码都没有codebehind,把.cs文件删掉吧(不删也没问题)。
奇怪,我弄了就不行。
freeflying1222 2010-02-22
  • 打赏
  • 举报
回复
我试过了,没问题呀!

第一段代码,要放在名为TemplatedUC.ascx的用户控件文件里;
第二段代码,是放在aspx页面的;

检查一下。两端代码都没有codebehind,把.cs文件删掉吧(不删也没问题)。
stning 2010-02-22
  • 打赏
  • 举报
回复
up。。。。。。。。。。。。。。。
stning 2010-02-22
  • 打赏
  • 举报
回复
麻烦做过的同学帮忙看看
一、应用场景与出发点 同一个系统中,为了解决不同的客户可能需要设计不同的单据打印模板,实现此方法可能是: 1、设计不同的自带RDLC报表文件,根据当前客户加载不同的报表并打印 2、GDI+绘图 和 打印组件 ,不同的客户创建不同的绘图XML格式的模板内容 3、其他第三方组件 主要对比一下前两种方法,第一种方法不好之处在于,不灵活,开发者必须地每个客户制订一个报表,不推荐采用。第二种方法,修改对应的模板内容就可以了, 模板内容可以是Xml文件,也可以是存放在数据库中的Xml格式字符串。推荐采用这种方法。然后这种方法的也有一个棘手问题 :如何让用户快速、方便地设计打印模板,本示例就是为了解决这个问题。 二、实现思路与原理 功能概要:设计一个界面,支持用户自由添加 要打印的项,文本,直线,图片 等,并且可以方便改变打印项的 字体、颜色、粗细、位置,设计时支持效果预览。 技术要点:GDI+绘图、拖动控件、XML解析、自定义控件 三、相关类介绍 绘图工具类:DrawHelper 实现 xml格式模板 与 打印项 之间进行互相转换,在目标画板中绘制 拖动工具类:WinHelper 实现控件的鼠标拖动,键盘移动 自定义控件:用于显示文字的文本框 TextBoxExt、用于显示直线的标签 LabelExt 主窗体代码:用于用户操作,添加,删除,编辑,打印项 详细介绍请参照我的博文:http://de.cel.blog.163.com/blog/static/51451236201472215450939/

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧