4月5日,遇到一个GridView很头疼的问题

实现模型:
在一张webform上有两个gridview,分别命名为gridview1和gridview2,显示如下类似数据
(table name t1)
id   c1   c2   type
1    1    1    1
2    2    2    1
3    1    1    1
4    2    2    1
5    1    1    1
6    2    2    1
7    1    1    2
8    2    2    2
9    1    1    2
10   2    2    2
11   1    1    2
12   2    2    2
其中gridview1的数据源是select * from t1 where type=1
gridview2的数据源是select * from t1 where type=2
两个gridview都有选择这一列,并且在这个webform中有两个按钮,btnUP,btnDOWN,前者实现的功能是将gridview1中选中的那行数据加入到gridview2中,但是,这个时候还不能改变gridview1里的被选中的那个type的值,要在单击网页中的那个确定按钮才正式对数据库进行更新操作,因为这个模型的要求是如果用户点击了退出按钮,那么刚才的操作就自动被cancel掉了。


困难:
操作必须要在点击确定按钮以后才正式的对数据库有这个更新的操作
对象的序列化
webform的生命周期与winform的不同,这个操作在winform里很好解决,因为这个窗体直在内存中消失了生命周期才算结束,但是webform是一次请求结束就完成了一次生命周期点击确定的时候才对数据库进行操作,之前想到的办法是建立一个操作列表ArrayList,里面记录被挪动的信息,并且把这个ArrayList对象保存到ViewState中,但是,在运行时却提示这个错误
程序集“System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的类型“System.Web.UI.WebControls.DataControlFieldCell”未标记为可序列化。
也许是不行

象这类问题在asp.net下是否有比较成型的解决方法,总感觉自己用的方法好笨而且还不好使
本以为自己的BS经验很丰富了,没想到还是被这个问题给撞了一下

补充:
有一个基本的思路就是:在点击的时候就把上面绑定的源中的那一行加入到下面,然后在单击确定以后再进行数据库的update
而问题就是在进行了这么多次postback后,上面和下面都有哪些数据应该怎么保存

posted @ 2006-04-05 14:39  哥本哈士奇(aspnetx)  阅读(766)  评论(0编辑  收藏  举报