自定义控件问题,应该不是大问题,高分请教!

phper2008 2009-11-27 01:39:20
开发个自定义控件,现在有2个属性,一个叫"ServerControlID",一个叫"ClientControlID",
这2个属性分别传入页面上一个服务器控件的id和一个html标记的id,

现在难点是如何做到在设计时 即Designer时可以选择,就是在属性面板上 点"ServerControlID"属性会出来个下拉框,
把当前页面的所有服务器控件的ID都列出来供选择,这个就好比RequiredFieldValidator控件的ControlToValidate属性一样:
我这样写了:

public Control ServerControlID
{
get
{
Control c = ViewState["ServerControlID"] as Control ;
if (c != null)
{
return c;
}
return null;
}
set
{
ViewState["ServerControlID"] = value;
}
}


确实在属性面板可以选择控件,单是当页面切入代码模式后再切回设计模式时就会报错“无法从什么什么string类型创建控件....”,我看了RequiredFieldValidator控件的ControlToValidate,确实ControlToValidate本身是"string"类型而不是设计成 "Control"类型,单是它是怎么能够选择控件的呢?我想可能是用"【XXXAttribute】"来搞的,单是这个怎么搞?我一时没有找到办法,请各位赐教!


还有就是"ClientControlID"跟上面一样,不过是要把页面上所有的html标记的id列出来,如<div id="test"></div>类型的标记,没有加"runat=server"的,这个能实现吗?


各位帮帮忙吧!谢谢!

...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
phper2008 2009-11-27
  • 打赏
  • 举报
回复
我看有个子定义控件 连页面里的js函数块都能找到么,可以找到页面里已经存在的js 函数

按说应该有办法搞定的!
阿非 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 phper2008 的回复:]
谢谢楼上2位,不过如何显示页面上的所有html标记的id呢?
这个能解决吗?
[/Quote]

这个解决不了
wei322x 2009-11-27
  • 打赏
  • 举报
回复
在后台获取就要加上runat=server ,!如果你是要在调用自定义页上获取自定义控件上的ID。。就需要
自定义控件ID.自定义控件上html控件的ID!
phper2008 2009-11-27
  • 打赏
  • 举报
回复
谢谢楼上2位,不过如何显示页面上的所有html标记的id呢?
这个能解决吗?
wei322x 2009-11-27
  • 打赏
  • 举报
回复
我从元数据中找到了这样的代码,恍然!

//
// 摘要:
// 获取或设置要验证的输入控件。
//
// 返回结果:
// 要验证的输入控件。默认值为 System.String.Empty,表示未设置此属性。
[IDReferenceProperty]
[TypeConverter(typeof(ValidatedControlConverter))]
[Themeable(false)]
[DefaultValue("")]
public string ControlToValidate { get; set; }

而ValidatedControlConverter又是从ControlIDConverter继承而来的,于是这个自定义控件的属性代码如下:

private string _controlToValidate;

62,074

社区成员

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

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

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

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