自定义模板化数据绑定控件从webcontrol和Control有什么不同?

vme 2004-09-16 09:47:29
自定义功能类似与Repeater的模板化数据绑定控件(包括控件的 Designer)。控件从webcontrol继承过来的话,什么问题都没有。但如果从control继承过来,没办法获得设计时期的界面,GetDesignTimeHtml返回的是空内容。由于控件没有定义任何样式(类似于Pepeater),代码没有重写过任何与呈现有关的函数。请问是怎么回事,问题怎么解决。
...全文
198 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
vme 2004-09-20
  • 打赏
  • 举报
回复
问题已解决。
控件要多个属性 PersistChildren(false),不然ItemTemplate为NULL ,子控件加不进去。
好象Control默认PersistChildren为true,而WebControl默认PersistChildren为false;
vme 2004-09-20
  • 打赏
  • 举报
回复
up
vme 2004-09-19
  • 打赏
  • 举报
回复
是这样的,这时控件是Control派生的。
但如果控件WebControl派生。
designTimeHTML = base.GetDesignTimeHtml();
System.Windows.Forms.MessageBox.Show(designTimeHTML);
得到就是预期的内容。
saucer 2004-09-19
  • 打赏
  • 举报
回复
you mean

this shows 5:

System.Windows.Forms.MessageBox.Show(tl.Items.Count.ToString());

but this is empty?

designTimeHTML = base.GetDesignTimeHtml();
System.Windows.Forms.MessageBox.Show(designTimeHTML);



vme 2004-09-19
  • 打赏
  • 举报
回复
这种方式我有测试过,得到的结果是和预期的一样为5。designTimeDataSource里面也有数据。但调用designTimeHTML = base.GetDesignTimeHtml的结果还是为空。不知道问题出在设计器还是控件的代码,因为我控件如果从WebControl派生,就可以得到正确的DesignTimeHtml内容,而从Control派生得到DesignTimeHtml的内容为空。
saucer 2004-09-19
  • 打赏
  • 举报
回复
>>>>现在的问题是,控件从Control派生时设计界面始终都是空空的,不管是否模板是否有内容,就只调用GetEmptyDesignTimeHtml的内容

something is probably wrong with your designer

the following works for me:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI.Design;

namespace SimpleControls
{
public class SimpleDesigner : System.Web.UI.Design.ControlDesigner
{
public override string GetDesignTimeHtml()
{
return "design time";
}

protected override string GetEmptyDesignTimeHtml()
{
return "empty";
//return base.GetEmptyDesignTimeHtml ();
}
}

[DefaultProperty("Text"),
ToolboxData("<{0}:TestSimple runat=server></{0}:TestSimple>"),
Designer(typeof(SimpleDesigner))
]
public class TestSimple : System.Web.UI.Control //System.Web.UI.WebControls.WebControl
{
private string text;

[Bindable(true),Category("Appearance"),DefaultValue("")]
public string Text
{
get {return text;}
set {text = value;}
}
protected override void Render(HtmlTextWriter output)
{
output.Write(Text);
}
}
}



try to see if you have anything...


public override string GetDesignTimeHtml()
{
TidyList tl = (TidyList)Component;
string designTimeHTML = null;

IEnumerable designTimeDataSource = GetDesignTimeDataSource(5);
try
{
tl.DataSource = designTimeDataSource;
tl.DataBind();
System.Windows.Forms.MessageBox.Show(tl.Items.Count.ToString());

designTimeHTML = base.GetDesignTimeHtml();
}
catch (Exception e)
{
designTimeHTML = GetErrorDesignTimeHtml(e);
}
finally
{
tl.DataSource = null;
}
return designTimeHTML;
}
vme 2004-09-18
  • 打赏
  • 举报
回复
控件的源代码在:
http://www.cnco.cn/vtest/tidylist/index.htm

希望能发现错在那里。
vme 2004-09-18
  • 打赏
  • 举报
回复
首先我做的是个模板化数据绑定控件,功能有点类似Repeater控件,该控件无论从webcontrol或从control派生在运行时都不会出现问题。我现在想得到设计时期的界面呈现支持,但不想对其在设计界面时进行模板编辑(类似Repeater只能在HTML视图下编辑),因此设计器是从ControlDesigner派生过来的,而不是从TemplatedControlDesigner派生。又由于控件不需要任何的样式,因此控件从Control派生(这点类似于Repeater也是从Control派生,而DataList是从WebControl派生)。

现在的问题是,控件从Control派生时设计界面始终都是空空的,不管是否模板是否有内容,就只调用GetEmptyDesignTimeHtml的内容。但如果我把控件从WebControl派生,就可以得到类似与Repeater在设计时期的界面。我怀疑是否从Control派生要重写Render方法,当查看了下Repeater控件,也没有重写该方法,同时Repeater控件的设计器RepeaterDesigner也是从ControlDesigner继承的。
Lostinet 2004-09-18
  • 打赏
  • 举报
回复
从WebControl中得到的是更多的支持。
例如Attributes,Style,ControlStyle,Tag,Render时的支持等。

如果你继承Control,那当然很多事情要自己做。
guxiangdefeng 2004-09-18
  • 打赏
  • 举报
回复
不太明白你的意思,
你想显示什么效果.
vme 2004-09-18
  • 打赏
  • 举报
回复
怎么没人能解决啊?
vme 2004-09-18
  • 打赏
  • 举报
回复
怎么没人来帮忙啊?
viena 2004-09-16
  • 打赏
  • 举报
回复
up
vme 2004-09-16
  • 打赏
  • 举报
回复
从control继承,在运行期也不会出问题。
vme 2004-09-16
  • 打赏
  • 举报
回复
谁帮忙下,谢了
【更新至2025年】2001-2025年上市公司数字转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、数字应用等类别下139个数字相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字应用-技术创新-甄、数字应用-流程创新-甄、数字应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据数据挖掘、文本挖掘、数据可视、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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