2012-03-23 94 views
2

我有一个DataTable从对TableNewRow事件的事件处理程序。当我保存此表为会话状态(初始化一些日期字段)数据表保存到会话状态丢失事件处理程序

一个强类型DataSet,事件处理程序正常触发,直到表序列化。在随后的请求中,当我从Session状态检索表时,事件处理程序不再触发。

这是正常的行为,我期望重新连接反序列化的事件处理程序?如果是这样,由于没有办法检查是否添加了事件处理程序,那么重新布线的适当钩子是什么?

+0

你能发布一些相关的代码? – 2012-03-23 06:05:56

回答

1

根据您的序列化,你可以尝试通过设置属性OnDeserialized https://stackoverflow.com/a/4172266/1236044

对XML序列化的事件处理程序,也许你可以尝试这样的事:

public override void ReadXml (XmlReader reader) 
{ 
    base.ReadXml(reader); 
    NewRow+=.... 
} 
+0

这工作完美!谢谢。 – 2012-03-23 11:41:29

0

如何存储会话状态?如果它不是InProc,那么所有对象都被序列化并保存到某个数据库。然后从反序列化中读取它们。这样你就失去了事件订阅。

+0

使用数据库会话状态时,是否有一种简单的方法可以将具有事件/处理程序的对象转储到会话中? – 2018-02-09 23:11:54