为什么datatable和dataset的值不能保存?

nbshiny 2007-06-27 04:43:45
首先我在类中定义了一个dataset的变量或者是datatable的一个变量,然后在asp.net的页面的protected void Page_Load(object sender, EventArgs e)方法里进行数据库的会查询操作,然后把获取到的dataset或者datatable传给外部所定义的dataset或者datatable变量,当然在方法内部会进行记录集的相应处理,,接着用户会在相应的加载的页面里执行某一个操作,比如要把记录集转成excel文件,这时候我就去调用之前在page_load的时候所传递过去的dataset或者datatable变量,然后进行相应的excel转换操作,但是程序运行的结果是这个dataset和datatable是null,我不知道是为什么?是不是因为datatable和dataset的值是不能保存的,还是什么其他原因?不知道有没有朋友知道答案,谢谢。
...全文
281 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nyzfl 2007-06-27
  • 打赏
  • 举报
回复
学习
jimu8130 2007-06-27
  • 打赏
  • 举报
回复
说错了,savedState是存在哪里了?
protected override object SaveViewState()
{
return name;
}
protected override void LoadViewState(object savedState)
{
name = savedState.tostring()
}

你这代码很诡异啊!
jimu8130 2007-06-27
  • 打赏
  • 举报
回复
这一对来保存和取数据,比如说,你有一个name(string)
protected override object SaveViewState()
{
return name;
}
protected override void LoadViewState(object savedState)
{
name = savedState.tostring()
}

当然也可以保存不同类型的数据,只要用object数组不就ok了吗!

那你的name存放在哪里了?
wjbs0612 2007-06-27
  • 打赏
  • 举报
回复
对于刚才的方法,只要写了这对方法,
那么以后你就可以像在写winform一样,不必顾及这些数据的保存问题。
wjbs0612 2007-06-27
  • 打赏
  • 举报
回复
其实页面 有很好的数据保存方案,你可以重写
protected override object SaveViewState()
{
return base.SaveViewState();
}

protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
}
这一对来保存和取数据,比如说,你有一个name(string)
protected override object SaveViewState()
{
return name;
}
protected override void LoadViewState(object savedState)
{
name = savedState.tostring()
}

当然也可以保存不同类型的数据,只要用object数组不就ok了吗!
  • 打赏
  • 举报
回复
我是比较讨厌session和viewstate的,一般不用他们,感觉这东西不够忠实
——————————————————————————————————————————
任何人的感觉永远都有差别。比较忠实的是找出深度技术原因,否则你自己写完成类似功能的东西也一样不忠实。
  • 打赏
  • 举报
回复
然后把获取到的dataset或者datatable传给外部所定义的dataset或者datatable变量,.......接着用户会在相应的加载的页面里执行某一个操作,比如要把记录集转成excel文件,这时候我就去调用之前在page_load的时候所传递过去的dataset或者datatable变量,然后进行相应的excel转换操作,.....
——————————————————————————————————————————
我上面只是看了后边的东西,而这里的描述跟ViewState无关。

看起来这是一个asp程序,而不是asp.net程序思路。

我只是建议你,不要为了一个后台功能搞2个页面。第二个页面顶多应该用于显示处理结果,例如显示Excel文件时就是从第一个页面传递这个excel文件的磁盘文件路径。
mqc507 2007-06-27
  • 打赏
  • 举报
回复
我是比较讨厌session和viewstate的,一般不用他们,感觉这东西不够忠实
  • 打赏
  • 举报
回复
对象必须能够序列化/反序列,才可以保存在ViewState中。

如果你自己定义的对象无法保存在ViewState中,你就应该为其类型定义序列化功能。参见:

http://msdn2.microsoft.com/zh-cn/library/system.runtime.serialization.iserializable(VS.80).aspx
http://www.eoot.cn/html/Program/net/20061018/1891.html
http://www.microsoft.com/china/MSDN/library/archives/library/dndotnet/html/objserializ.asp

等。
jimu8130 2007-06-27
  • 打赏
  • 举报
回复
http://blog.joycode.com/percyboy/archive/2004/08/22/31330.aspx
jimu8130 2007-06-27
  • 打赏
  • 举报
回复
建议在取到数据后,用viewstate保存起来。在与服务器的往返中使用它。
当然,当数据更改后,需要重新保存,否则viewstate中的数据和表中的数据就不一致了。
-----
数据量小存在这里没关系,如果大了,可以考虑cache,viewstate是会跟着客户端的,所以它会影响网页的显示速度!

为什么其他的变量不行,我想你得弄清楚页面的生命周期以及一个网页的形成过程。
nbshiny 2007-06-27
  • 打赏
  • 举报
回复
ViewState可以正常保存的,为什么我在类里面定义的其他变量就不能正确做过值得传递呢???而viewstate就可以做到?
踏雪听雨 2007-06-27
  • 打赏
  • 举报
回复
ViewState能保存DataTable或者DataSet吗???好像不能的吧
用Session可以
  • 打赏
  • 举报
回复
建议在取到数据后,用viewstate保存起来。在与服务器的往返中使用它。
当然,当数据更改后,需要重新保存,否则viewstate中的数据和表中的数据就不一致了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧