如何让PageLoad()中的某段代码只执行一次呢
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{ int id=0;
id=Convert.ToInt32(Request.QueryString["depart"].ToString());
Session["id"]=id.ToString();
bindgrid();
}
}
bindgrid是reapter控件绑定数据库的语句,我用session来作为查询条件,在翻页的时候会重新执行if(!IsPostBack)里的全部代码,所以session的值发生改变,由于在翻页时得不到index传来的参数depart,仍然执行Session["id"]=id.ToString();所以出错了.请问如何在翻页时bindgrid();前面的语句只执行一次来保证session["id"]始终为index传来的参数depart
问题点数:10、回复次数:14Top
1 楼smin1994(smin1994)回复于 2005-08-01 08:53:12 得分 0
把Request.QueryString["depart"].ToString()存入字符串!
利用try...catch...做处理应该可以!
你试试Top
2 楼ZhangYaoxing(westxx)回复于 2005-08-01 08:58:24 得分 0
觉得楼主的思维可能还是受到asp等语言的影响。通过事件中重新绑定数据源来翻页,而不要重新装入页面应该就可以了吧Top
3 楼yzsb1118(我)回复于 2005-08-01 09:07:26 得分 0
做标记,有很多方法的,动态向网上创建隐藏控件,或者在服务器上创建临时文件来做标记也行,总之方法太多了!Top
4 楼eyych(2006)回复于 2005-08-01 09:08:15 得分 0
同意:ZhangYaoxing(westxx)
怎么还用Session分页??。。。Top
5 楼fxmpch(梦中明月)回复于 2005-08-01 09:13:48 得分 0
加一个判断:
if Session("id") is nothing then
Session["id"]=id.ToString();
else
end ifTop
6 楼juziE2006(橘子)回复于 2005-08-01 09:40:09 得分 0
通过事件中重新绑定数据源来翻页
能不能具体点呢Top
7 楼lalala2000()回复于 2005-08-01 09:53:40 得分 0
不如放到Page_init()事件中(好象有的)Top
8 楼juziE2006(橘子)回复于 2005-08-01 10:02:36 得分 0
现在的问题是int id=0;
id=Convert.ToInt32(Request.QueryString["depart"].ToString
这两句代码会重复执行,所以出错了Top
9 楼sosososo(流浪者)回复于 2005-08-01 10:09:51 得分 0
应该是你重新装入页面的问题
翻页按钮不要用超链接的方式Top
10 楼xqsman(@_@)回复于 2005-08-01 10:40:00 得分 0
把depart保存到HtmlInputHidden,写一个脚本函数改变depart然后submitTop
11 楼mathsword(梦在流浪)回复于 2005-08-01 10:55:50 得分 0
放到viewstate中就可以了Top
12 楼iceqings(小西瓜)回复于 2005-08-01 11:06:24 得分 10
使用IsPostBack
让里面的程序只运行一次
就可以了
实例:
private void Page_Load(object sender, System.EventArgs e)
{
你要重复执行的代码
if (!IsPostBack)
{
你只要运行一次的代码
}
}Top
13 楼jimu8130(火箭的未来在哪里?)回复于 2005-08-01 11:26:56 得分 0
觉得应该设置个标记Top
14 楼shamao(稳重,踏实,责任)回复于 2006-04-15 19:13:50 得分 0
CSDN搜索-->PageLoad。
或参考:
http://community.csdn.net/Expert/topic/4452/4452718.xml?temp=.7898371
Top




