保存到Session状态的DataTable丢失了事件处理程序

时间:2012-03-23 02:59:46

标签: c# asp.net events

我有一个来自强类型DataSet的DataTable,它在TableNewRow事件上有一个事件处理程序(用于初始化一些日期字段)

当我将此表保存到Session状态时,事件处理程序会正常触发,直到表的序列化为止。在从Session状态检索表时的后续请求中,事件处理程序不再触发。

这是正常的行为,我希望在反序列化时重新连接事件处理程序吗?如果是这样,既然没有办法检查是否添加了事件处理程序,那么进行重新布线的正确钩子是什么?

2 个答案:

答案 0 :(得分:1)

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

对于Xml序列化,也许您可​​以尝试这样的事情:

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

答案 1 :(得分:0)

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

相关问题