仅有的20分--请教,关于DataGrid分页的问题

关于一个查询结果分页的问题:

public class searchfailOrder : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
DataSet ds = new DataSet();

private void Page_Load(object sender, System.EventArgs e)
{
}
private void Button1_Click(object sender, System.EventArgs e)
{
ds = GetSet();
this.DataGrid1.DataSource =ds;
this.DataGrid1.DataBind();
}
private DataSet GetSet()
{
...根据页面的一些条件查询,返回....
return Set;
}

private void DataGrid1_PageIndexChanged_1(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
// this.DataGrid1.DataSource =ds; //****这样的话,出错是数据源 ds不存在

this.DataGrid1.DataSource =GetSet(); //这样可以,但是还要重新再去获取一次数据库的数据,效率不行啊.
this.DataGrid1.DataBind();

}
}

Button1_Click的时候已经ds = GetSet(),数据不是已经在内存中了??
为什么分页重新绑定的时候不能直接使用ds绑定?
[1014 byte] By [yaoyouyou-悠] at [2008-2-16]
# 1
this.DataGrid1.DataSource =GetSet(); //这样可以,但是还要重新再去获取一次数据库的数据,效率不行啊.
--------------是啊,但又有什么办法呢,虽然你可以把dataset保存到session
DataSet ds;
if(Session["?"]!=null)
ds=(DataSet)Session["?"];
else
ds=GetSet();
this.DataGrid1.DataSource=ds;
....

个人觉得这样也好不到哪儿去
# 2
是呀,我也是想了好久。。关注中。。。
# 3
郁闷,把DataSet定义成静态的,还可以绑定.但是却只能一个人用.
有没有谁有好的解决办法呢?
yaoyouyou-悠 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 4
up
tianwenjie at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 5
只有把dataset保存到session或viewstate中去,否则每次PageIndexChanged事件提交到server端时,ds都会被清掉!
yellowhwb-天の羽 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 6
Session可以保存多大的数据
yaoyouyou-悠 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 7
DG.CurrentPageIndex=e.NewPageIndex;
OracleDataAdapter da=new OracleDataAdapter("select * from 表名",con);
da.Fill(ds,"xx");
DG.DataSource=ds.Tables["xx"].DefaultView;
DG.DataBind();
nm3000-苹果2004 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 8
Session可以保存多大的数据
----就看你内存有多少了
# 9
Session用多了不好,登录的人一多,服务器很容易down掉!
yellowhwb-天の羽 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 10
确实是有这个问题啊!请问高手是如何解决这个问题的呢?我现在也用的是viewstate,但是担心和session有一样的效果啊。有更好的办法吗?
yeminzhu-夜明珠 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 11
看你的数据是不是所有人共享相同的数据了,如果所有人共享相同数据时 定义时可以使用PUBLIC SHARED 定义为静态变量. 你需要做的是判断什么时候给这个静态变量设定初始值
xiays-一叶小舟 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 12
Session能不用就不用吧
wangdequan1024-紫夜 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 13
to yeminzhu(夜明珠)
viewstate是把对象流化后发到客户端的页面上,所有不会和session一样,但是viewstate由于要传输二进制流,所以,客户端和服务器端的数据交互会变多,而且viewstate的生存期是和页面一样的,页面关了,viewstate也就不存在了,没有session好用!
yellowhwb-天の羽 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...
# 14
继续关注。。。。。
yaoyouyou-悠 at 2007-10-22 > top of Msdn China Tech,.NET技术,C#...