如何在页面中保存dataset

dream__life 2009-10-28 09:48:17
现在是在页面加载之后就生成了一个dataset,然后用不断的用ajax修改dataset的数据,最后才保存进数据库。

刚开始我放在ViewState中,试一下ajax居然访问不到;现在放在session中,感觉太占资源了。。。
...全文
80 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dream__life 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shalen520 的回复:]
用cache吧,viewstate不是很适合放dataset,而且ajax没有回发,所以也取不到viewstate
[/Quote]

哎,看来就用session了,我保存的数据是用户级的。
  • 打赏
  • 举报
回复
viewstate, cache, session都能用,注意它们的区别就可以了。viewstate的好处是不会过期。缺点是作用域局限在每个页面或用户控件,有ajax时使用不便(因为viewstate本来就是为回发所设计的)每次回发都会在客户端和服务端之间来回倒腾,数据量大,网速慢时对性能影响很大,而且如果数据量太大,突破了4M,还得修改web.config设置; session的好处是作用范围是每个用户,在多个用户控件或页面之间共享数据比较有用,存放在服务端,不需要来回倒腾,性能较好,缺点是会过期(虽然可以通过定时刷新页面的办法来强制不过期),另外因为session是针对用户的,所以如果并发用户很多时就会影响性能;cache是被所有用户共享的,好处是节省了资源,缺点主要是难以针对每个用户定制,如果需要修改cache中的内容,则多个用户之间容易产生冲突。
所以,我一般用viewstate来保存一个页面里需要持久化的一些全局变量,用session在多个页面之间共享少量数据如状态变量等,用cache来存放比较稳定,而且能为所有用户共享的数据。
shalen520 2009-10-28
  • 打赏
  • 举报
回复
用cache吧,viewstate不是很适合放dataset,而且ajax没有回发,所以也取不到viewstate
zhujiazhi 2009-10-28
  • 打赏
  • 举报
回复
如果用ajaxpro 来实现ajax的话, 貌似只能取session里面的值的,
阿非 2009-10-28
  • 打赏
  • 举报
回复
你把你的需求描述一下
randomfeel 2009-10-28
  • 打赏
  • 举报
回复
就用viewstate就可以了,用session不好

viewstate是服务器变量,js取不到,所以需要一个服务器端函数
[AjaxMethod]
public string GetViewStateValue(string key)
{
if(ViewState[key]==null)
{
return "";
}
return ViewState[key].ToString();
}
然后用ajax访问

这样就可以了
yyhlove 2009-10-28
  • 打赏
  • 举报
回复
一般的处理是这样的:

DataSet dsTest = new DataSet(); //声明一个DataSet
if(ViewState["ds"] == null) //第一次执行,ViewState为空
{
DataTable dt = new DataTable();
dt.Columns.Add("col");
DataRow dr = dt.NewRow();
dr[0] = "abc";
dt.Rows.Add(dr);
dsTest.Tables.Add(dt);
}
else //ViewState不为空
{
dsTest = (DataSet)ViewState["ds"]; //提取ViewState中的值
DataRow dr = dsTest.Tables[0].NewRow();
dr[0] = "bcd";
dsTest.Tables[0].Rows.Add(dr);
}
ViewState["ds"] = dsTest; //将新DataSet写人ViewState
Response.Write(dsTest.Tables[0].Rows.Count.ToString());

把以上代码写到一个Button的Click事件里,连续单击Button,可以看见输出的数值不断增加。
zhong2006 2009-10-28
  • 打赏
  • 举报
回复
ViewState的范围只是本页面,不想用session的话,就用cache

62,073

社区成员

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

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

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

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