[WebControl开发]如何persist控件的collection类型的属性(property)?

kulukala 2005-03-02 04:40:26
我正在开发Asp.net的WebControl.
我的控件类有一个属性Items是ComboItemCollection类型(CollectionBase),其中的Item类型为ComboItem对象.
我写了相应的ComboItemCollectionEditor以支持Property Explorer的属性编辑,写了ComboItemConverter以支持ComboItem的类型转换。
Items的Meta Attributes如下:
[NotifyParentProperty(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(ComboItemCollectionEditor),typeof(UITypeEditor))]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]

出现问题的情况是:
我在Property Explorer中添加了ComboItem给Items,这时.net的Designer会生成相应的Aspx的代码如下:
<CC1:MyControl>
<Items>
<CC1:ComboItem value="1" content="1" ....其他attributes></CC1:ComboItem>
<CC1:ComboItem value="2" content="2" ....其他attributes></CC1:ComboItem>
<CC1:ComboItem value="3" content="3" ....其他attributes></CC1:ComboItem>
</Items>
</CC1:MyControl>

然后我编译整个项目,此时控件的UI无法绘制,提示信息是"Cannot set on Items".但是Run起来,整个控件却没有问题,添加的Items也是正确的值。

请问:
是什么原因导致我的控件在DesignTime不可绘制?是Items没有相应的TypeConvertor还是Items的Meta Attributes不正确?
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nytony 2005-04-13
  • 打赏
  • 举报
回复
gz
athossmth 2005-03-27
  • 打赏
  • 举报
回复
viewstate。参考:

/// <summary>
/// The style of the tab item when in a selected state.
/// </summary>
[
Category("Appearance"),
DefaultValue(typeof(CssCollection), ""),
PersistenceMode(PersistenceMode.Attribute),
ResDescription("ChildSelectedStyle"),
]
public CssCollection SelectedStyle
{
get { return _SelectedStyle; }
set
{
_SelectedStyle = value;
if (((IStateManager)this).IsTrackingViewState)
{
((IStateManager)_SelectedStyle).TrackViewState();
_SelectedStyle.Dirty = true;
}
}
}
liuziran 2005-03-21
  • 打赏
  • 举报
回复
实现IStateManager接口

原理就是利用ViewState对象保存
bqun 2005-03-15
  • 打赏
  • 举报
回复
gz
lovelxj 2005-03-11
  • 打赏
  • 举报
回复
是 啊 一个控件 他可以有设计时的模式显示,就比如说datagrid的显示,和输出时的显示
kulukala 2005-03-11
  • 打赏
  • 举报
回复
to lovelxj:
你的意思是,需要一个Designer?
lovelxj 2005-03-09
  • 打赏
  • 举报
回复
要写控件的设计时模式。。。
amendajing 2005-03-02
  • 打赏
  • 举报
回复
mark

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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