DataGrid疑惑?请大家帮忙!

GumPGZ 2002-07-22 06:27:27
在使用DataGrid的时候显然要进行bind

我把DataSet邦定到DataGrid写成了一个事件(命名为:BindGrid),此事件中包含
与数据库建立连接,取得数据集,然后bind到DataGrid上.

这样作发现一个问题,就是在分页的时候,当单击下一页,或上一页时,
我在PageIndexChange事件中调用了BindGrid(),这样就又出现一次与数据库连接等操作.请问这部操作(即在PageIndexIndex中调用BindGrid)是不是必须的?

请问该如何优化呢?不能这样屡次连接数据库,然后bind吧?如何保存这个DataSet呢?
也就是说在翻页的时候直接使用已经存在的数据集而无需再次向数据库取得数据?
...全文
30 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
monkey_zeng 2002-07-23
  • 打赏
  • 举报
回复
我知道一种方法,是将DataSet放在缓存里面,每次就从里面调用.
不过我没有亲手做过.实验过后再详细告知.
GumPGZ 2002-07-23
  • 打赏
  • 举报
回复
再挂一天给分
GumPGZ 2002-07-23
  • 打赏
  • 举报
回复
up
bluefish922 2002-07-23
  • 打赏
  • 举报
回复
关注。
MFC2001 2002-07-23
  • 打赏
  • 举报
回复
呵呵,是这样的,其实问题的本质是如何在web窗体中使用全局对象变量的问题。在web窗体中,对象变量的生存周期和win form中是不同的!

GumPGZ 2002-07-23
  • 打赏
  • 举报
回复
我没有卸载global里面,但是我写在了自己定义的类里面,
差不多是一样的吧

另外,我的意思是,每次翻页都要重新Bind,每次bind都要连数据库,
这样做效率是不是不高呢?是不是浪费database server的资源呢?
MFC2001 2002-07-23
  • 打赏
  • 举报
回复
web 窗体是无法记住一个对象变量的,所以viewstata和session都不行

如果可以大可以把SqlConnection在global里然后全局使用

GumPGZ 2002-07-23
  • 打赏
  • 举报
回复
想寻求一个好的解决办法
bluefish922 2002-07-23
  • 打赏
  • 举报
回复
我做在组件里
GumPGZ 2002-07-23
  • 打赏
  • 举报
回复
跟我的是一样的嘛
GumPGZ 2002-07-23
  • 打赏
  • 举报
回复
跟我的是一样的嘛
cloud1121 2002-07-23
  • 打赏
  • 举报
回复
这样行吗?联接是做在global里面的。

public static DataView r_t;
private void Page_Load(object sender, System.EventArgs e)
{
r_t=makedv("select b.ybbm,a.ybmc as 品名,a.dw as 单位,b.kcsl as 当前库存数量,b.zdz as 最大剩余量,b.zdz_max as 最大量 from yb_ybbm a,yb_kcb b where a.ybbm=b.ybbm");
data(r_t);
}
private void data(object rs)
{
DataGrid1.DataSource=rs;
DataGrid1.DataBind();
DataGrid1.DataKeyField="ybbm";
}
private DataView makedv(string cCmd)
{
OdbcDataAdapter oda=new OdbcDataAdapter(cCmd,(OdbcConnection)Application["oConn"]);
DataSet ds=new DataSet();
oda.Fill(ds);
DataView dv=ds.Tables[0].DefaultView;
ds=null;
oda=null;
return(dv);
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
data(r_t);
}
GumPGZ 2002-07-22
  • 打赏
  • 举报
回复
那我做的就是正确的了
mmkk 2002-07-22
  • 打赏
  • 举报
回复
还是连接比较好,让入cache,session都会占用内容,而且放入cache如果数据一旦发生改变,cache不能马上反映。
GumPGZ 2002-07-22
  • 打赏
  • 举报
回复
楼上,能否说得详细一些,please
xhan2000 2002-07-22
  • 打赏
  • 举报
回复
hehe

viewstata呵session都不可取

cache
icyer 2002-07-22
  • 打赏
  • 举报
回复
或者是放在静态变量中。
bluefish922 2002-07-22
  • 打赏
  • 举报
回复
放在SESSION里好吗?
hgknight 2002-07-22
  • 打赏
  • 举报
回复
好论题,学习
icyer 2002-07-22
  • 打赏
  • 举报
回复
改变PageIndexChange之后必须执行DataGrid1.DataBind才能更新,而执行.DataBind()之前又必须指定DataSource。
或许可以把DataSet放在ViewState或者Session里面,这样就不用每次都连接数据库了。
其实如果Web服务器与数据库服务器相隔不是太远的话,连接数据库的时间几乎可以忽略不计。
加载更多回复(2)

62,025

社区成员

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

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

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

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