日期:2014-05-18  浏览次数:20505 次

ViewState中存放复杂对象
namespace   Smanage.cs
{

//类B
[SerializableAttribute]
public   class   ColumnProperty
{
public   ColumnProperty(string   str_column,string   str_type,string   str_memo,string   str_dropSql,string   str_dropValue,string   str_dropText,string[]   str_enum,bool   display,bool   b_Readonly)
{
}
}

//类A
[SerializableAttribute]
public   class   BaseDataSet:System.Data.DataSet
{
public   System.Collections.ArrayList   ColumnPropertyList;//类B的集合
public   void   AddColumnPropertyList(ColumnProperty   col)
{
ColumnPropertyList.Add(col);
}
public   BaseDataSet(SerializationInfo   info,   StreamingContext   context)   :   base(info,   context)
{
}
}

//在网页中的应用()
public   class   Test
{
private   BaseDataSet   ety
{
get
{
return   (BaseDataSet)ViewState[ "ety "];
}
set
{
ViewState[ "ety "]=value;
}
}

private   void   search()
{
//ety=....//给ety赋值
}

private   void   update()
{
//使用ety.ColumnPropertyList则无法取出//
}

}
}


------解决方案--------------------
取出A后B丢失了是什么意思?
是取出A后得不到b的值吗?
把b的值存储在a中怎么会丢失?
你看一下b的值是否存储到a中了?
------解决方案--------------------
你调用AddColumnPropertyList了吗?
------解决方案--------------------
寸了不可能是空的撒.
------解决方案--------------------
首先,一项原则: 不在 ViewState 存储复杂大对象

具体如何,回来填饱肚皮,回来看
------解决方案--------------------
依然看不懂
------解决方案--------------------
private BaseDataSet ety
========================
类的属性为何要用private,请改为public BaseDataSet ety.