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

求帮、,关于动态创建dropdownlist的保存方法
我详细解释下思路
1、实现dropdownlist无限级显示,比如显示“中国-辽宁”,“中国-辽宁-大连”,“中国-辽宁-大连-中山区”,这里面深度是不确定的,所以我要根据是否存在下一级分类动态添加dropdownlist控件并显示数据。
2、这里的关键部分是我如何保持上次我记录的状态,是通过将动态数组加入列表,并保存到viewstate中来实现的,在下一次选择dropdownlist前从viewstate取出状态并反序列化显示出来。但是出现的下面的错误。
程序集“System.Web,   Version=2.0.0.0,   Culture=neutral,   PublicKeyToken=b03f5f7f11d50a3a”中的类型“System.Web.UI.WebControls.DropDownList”未标记为可序列化。
也就是说将arraylist保存到viewstate中不允许对dropdownlist序列化取值
3、看代码中有定义Session[ "createdcontrol "],是别人写的一个程序,是通过session来保存状态,但是我不想用session,因为如果用session保存必须iis用inProc模式,我现在用的是ServerState模式,如下错误

"无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET   将序列化会话状态对象,因此不允许使用无法序列化的对象或   MarshalByRef   对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制 "


我想问以下   除了SESSION保存对象的方法请问还有什么方法可以保存对象么     谢谢

------解决方案--------------------
不是很会,但还是帮顶一下
------解决方案--------------------
以前只做过3个动态联动~~这么深的没研究过
------解决方案--------------------
除了SESSION保存对象的方法以外还可以用页面级的ViewState,功能与使用方法和SESSION类似,不过是存在页面上的而非存在服务器上。
------解决方案--------------------
还有个方法就是把DropDownList定义为全局的static,不过全局的要定义在外面,所以不方便用动态创建来弄,不过如果你的上限数量不是很大倒是可以试试。