网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

控件自定义属性类型之状态维护

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
.Web.UI;

namespace CustomPeople
{
[TypeConverter(typeof(AddressConverter))]
public class Address : IStateManager
{
private String street = null;
private String city = null;
private String state = null;
private String zip = null;

public Address()
:
this(String.Empty, String.Empty,
String.Empty, String.Empty)
{ }

public Address(string street, string city,
string state, string zip)
{
this.street = street;
this.city = city;
this.state = state;
this.zip = zip;
}

[NotifyParentProperty(true)]
public String Street
{
get { return ViewState["Street"] != null ? (string)ViewState["Street"] : String.Empty; }
set { ViewState["Street"] = value; }
}

[
Category("Behavior"),
DefaultValue(""),
Description("城市"),
NotifyParentProperty(true),
]
public String City
{
get { return ViewState["City"] != null ? (string)ViewState["City"] : String.Empty; }
set { ViewState["City"] = value; }
}

[
Category("Behavior"),
DefaultValue(""),
Description("国籍"),
NotifyParentProperty(true),
]

public String State
{
get { return ViewState["State"] != null ? (string)ViewState["State"] : String.Empty; }
set { ViewState["State"] = value; }
}

[
Category("Behavior"),
DefaultValue(""),
Description("邮编"),
NotifyParentProperty(true)
]
public String Zip
{
get { return ViewState["Zip"] != null ? (string)ViewState["Zip"] : String.Empty; }
set { ViewState["Zip"] = value; }
}


方法#region 方法

public override string ToString()
{
return ToString(CultureInfo.CurrentCulture);
}

public virtual string ToString(CultureInfo culture)
{
return TypeDescriptor.GetConverter(typeof(Address)).ConvertToString(null, culture, this);
}

#endregion

自定义状态管理#region 自定义状态管理

private bool _isTrackingViewState;
private StateBag _viewState;

protected StateBag ViewState
{
get
{
if (_viewState == null)
{
_viewState = new StateBag(false);
if (_isTrackingViewState) ((IStateManager)_viewState).TrackViewState();
}
return _viewState;
}
}

bool IStateManager.IsTrackingViewState
{
get
{
return _isTrackingViewState;
}
}

void IStateManager.LoadViewState(object savedState)
{
if (savedState != null)
{
((IStateManager)ViewState).LoadViewState(savedState);
}
}

object IStateManager.SaveViewState()
{
object savedState = null;
if (_viewState != null)
{
savedState =
((IStateManager)_viewState).SaveViewState();
}
return savedState;
}

void IStateManager.TrackViewState()
{
_isTrackingViewState = true;

if (_viewState != null)
{
((IStateManager)_viewState).TrackViewState();
}
}

internal void SetDirty()
{
_viewState.SetDirty(true);
}

#endregion
}
}本来不想解释什么,怕大家嫌我罗嗦,但是要记得ViewState的为StateBag类型

3.2第二步,维护自定义属性的状态,(请注意,此时的CustomAddress就是People的一个属性,所以我们就叫自定义属性的状态维护)
Code
自定义视图状态#region 自定义视图状态

[Description("地址集合")]
[DesignerSerializat

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号