CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

一个反序列化的问题

楼主lane3000(lane)2006-03-01 12:29:02 在 .NET技术 / ASP.NET 提问

请看以下代码:  
  public   class   SaveViewStateToOther   :   Page  
  { protected   DataGrid   DataGrid1;  
  private   void   Page_Load(object   sender,   EventArgs   e)  
  {               if   (!IsPostBack)  
  Bind();  
                                          }  
  private   void   Bind()  
  {  
  DataTable   table   =   new   DataTable();  
  table.Columns.Add("id",   typeof   (int));  
  table.Columns.Add("name",   typeof   (string));  
  for   (int   i   =   0;   i   <   1000;   i++)  
  {  
  DataRow   row   =   table.NewRow();  
  row["id"]   =   i;  
  row["name"]   =   "student_"   +   i.ToString();  
  table.Rows.Add(row);  
  }  
  DataGrid1.DataSource   =   table;  
  DataGrid1.DataBind();}            
            protected   override   void   SavePageStateToPersistenceMedium(object   viewState)  
  {  
  LosFormatter   format   =   new   LosFormatter();  
  StringWriter   writer   =   new   StringWriter();  
  format.Serialize(writer,   viewState);  
  string   vsRaw   =   writer.ToString();  
  byte[]   buffer   =   Convert.FromBase64String(vsRaw);  
  string   vsText   =   Encoding.ASCII.GetString(buffer);  
  object   v   =   Cache[PageKey];  
  if   (v   ==   null)  
    Cache.Insert(PageKey,   vsText);  
  else  
    Cache[PageKey]   =   vsText;  
  }  
  public   string   PageKey  
  {  
  get   {   return   Session.SessionID   +   "_page_SaveViewStateToOther_aspx";   }  
  }  
  protected   override   object   LoadPageStateFromPersistenceMedium()  
  {  
  object   s   =   Cache[PageKey];  
  if   (s   !=   null)  
  {  
  string   state   =   s.ToString();  
  byte[]   buffer   =   Encoding.ASCII.GetBytes(state);  
  string   vsRaw   =   Convert.ToBase64String(buffer);  
  LosFormatter   formatter   =   new   LosFormatter();  
  return   formatter.Deserialize(vsRaw);  
  }  
  return   null;  
  }  
   
  上面的代码运行正确并且达到目的,当我将Bind()中的内容换成邦定数据库的数据的时候,当页面刷新时,在函数LoadPageStateFromPersistenceMedium的return   formatter.Deserialize(vsRaw);出现错误“键不能为空",请问这是什么原因? 问题点数:50、回复次数:4Top

1 楼seekg()回复于 2006-03-01 12:59:14 得分 0

upTop

2 楼binwind(起风的日子)回复于 2006-03-01 13:51:30 得分 0

我有过类似的经历。当dataTable的column数为0时候.反序列化是有可能出错的。你看看你碰到的是否是这个问题。Top

3 楼lane3000(lane)回复于 2006-03-01 14:05:23 得分 0

谢谢支持,现在我的意思只是把Bind()中换成和数据库绑定,结果在反序列化时就出错,其它的搜不变,怎么解决这样的问题?  
  请各位高手指点,谢谢  
  Top

4 楼lane3000(lane)回复于 2006-03-01 14:08:44 得分 0

比如将Bind()改成如下:  
  private   void   DataBind()  
  {        
  SqlConnection   conn=new     SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectString"]);  
  conn.Open();  
  SqlCommand   cmd=conn.CreateCommand();  
  SqlDataAdapter   sa=new   SqlDataAdapter();  
  sa.SelectCommand=cmd;  
  cmd.CommandType=CommandType.StoredProcedure;  
  cmd.CommandText="SP_MgMrBasicTblList";  
  DataSet   ds=new   DataSet();  
  sa.Fill(ds);  
  DataTable   dt=ds.Tables[0];  
  DataGrid1.DataSource=dt.DefaultView;  
  DataGrid1.DataBind();  
   
  }  
  这样就会出现上面提示的错误Top

相关问题

  • 序列化和反序列化有什么作用!
  • 求助关于序列化和反序列化
  • vb 如何序列化 和 反序列化一个 数组?
  • 序列化和反序列化的问题
  • 关于序列化和反序列化的问题:反序列化不了怎么回事啊?
  • 关于SoapFormatter反序列化的问题
  • 关于反序列化的问题
  • [求助]请教一个对象序列化和反序列化的问题!!!!
  • 读取分析XML文件,和从序列化保存的文件中读取序列化数据,然后反序列化,哪样快?
  • Remoting程序中遇到“序列化不会反序列化非公共方法的委托”

关键词

  • datagrid
  • typeof
  • datatable
  • bind
  • columns
  • table
  • private void
  • page
  • add

得分解答快速导航

  • 帖主:lane3000

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo