为什么程序会连续两次访问Page_Load(),并且都执行了if(!Page.IsPostBack)

时间:2022-01-16 18:53:26
为什么程序会连续两次访问Page_Load(),并且都执行了if(!Page.IsPostBack)?

25 个解决方案

#1


是不是有2个this.Load += new System.EventHandler(this.Page_Load);

#2


你先贴出代码看看

#3


你事先要看你的page_load是在页面内的还是控件内的。

如果是在页面内的,只有客户端发送了两次命令请求才可能。

#4


to  liuredstar(Flying) :
只有一个this.Load += new System.EventHandler(this.Page_Load);

to  jiangchuandong(Who Am I?) :

private void Page_Load(object sender, System.EventArgs e)
{
InitForm();
}
private void InitForm()
{
}

#5


楼上说得对,如果不是那个问题,最好把代码贴出来

#6


sp1234(上帝赐我个红娘吧) 说得对

#7


dgName.DataSource=ds.Tables[0].DefaultView;           
dgName.DataBind();  

我认为是datagrid绑定后会重新刷新页面。

#8


private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
InitForm();
}
}
private void InitForm()
{
dgName.DataSource=ds.Tables[0].DefaultView;           
dgName.DataBind();  
}

#9


非常同意以下观点

----------------------------------------------------------
sp1234(上帝赐我个红娘吧)
 
你事先要看你的page_load是在页面内的还是控件内的。

如果是在页面内的,只有客户端发送了两次命令请求才可能。
----------------------------------------------------------

#10


我也认为是DataGrid执行时要刷新

#11


代码贴得太少了  错误没有暴露给大家啊

#12


真奇怪。。楼主。把全部代码贴出来。分析分析

#13


to  studydotnet(乐于助人,开心接分!) :
我做过测试了,我屏蔽了DataGrid的数据绑定,则没有第二次执行if(!Page.IsPostBack)
怎么才能避免在DataGrid的数据绑定时不执行刷新呢?

#14


代码如下:
CCPlan objPlan;

static string strKeyWord;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
CCDBO objConn=new CCDBO();

SqlConnection pCn=objConn.GetConnection();

objPlan=new CCPlan(pCn);

if(!Page.IsPostBack)
{
strKeyWord="";
InitForm();
}
}

private void InitForm()
{
if(strKeyWord!=txtKey.Text.Trim())
{
strKeyWord=txtKey.Text.Trim();
dg.CurrentPageIndex=0; 
}

DataSet ds=objPlan.GetItemInfo(strKeyWord); 

if(ds!=null)
{
dg.DataSource=ds.Tables[0].DefaultView; 
            
dg.DataBind(); 

}
}

#15



可能是Request了两次了吧,应该不是什么大问题!

#16


怎么才能避免在DataGrid的数据绑定时不执行刷新呢?

#17


这样的问题有遇到过.不过感觉没什么影响...等待2005.看看是否有改进

#18


数据榜定是要postback的,不然只能用ajax的方法了。

#19


应该是Page_Load执行两次,
strKeyWord="";
InitForm();
只执行一次吧?

#20


路過...

#21


按照上面的代码,应该执行一次的。你跟踪一下吧。

#22


为什么程序会连续两次访问Page_Load(),并且都执行了if(!Page.IsPostBack)?

----

说明客户端有两次请求,而不是datagrid绑定造成刷新的,如果if(!Page.IsPostBack)判断中的方法也被执行,则说明客户端执行了location的转向,比如客户端的location.href=''或服务器端的response.Redirect

datagrid的databind方法只负责render对应的html,当页面完全render完成之后一次呈现给客户端的。

#23


同意上楼,应该是请求了两次

#24


to   Truly():

我的代码就是上面的那些,你认为那些是"则说明客户端执行了location的转向,比如客户端的location.href=''或服务器端的response.Redirect"????

#25


按照上面的代码,应该执行一次的。你跟踪一下吧。

#1


是不是有2个this.Load += new System.EventHandler(this.Page_Load);

#2


你先贴出代码看看

#3


你事先要看你的page_load是在页面内的还是控件内的。

如果是在页面内的,只有客户端发送了两次命令请求才可能。

#4


to  liuredstar(Flying) :
只有一个this.Load += new System.EventHandler(this.Page_Load);

to  jiangchuandong(Who Am I?) :

private void Page_Load(object sender, System.EventArgs e)
{
InitForm();
}
private void InitForm()
{
}

#5


楼上说得对,如果不是那个问题,最好把代码贴出来

#6


sp1234(上帝赐我个红娘吧) 说得对

#7


dgName.DataSource=ds.Tables[0].DefaultView;           
dgName.DataBind();  

我认为是datagrid绑定后会重新刷新页面。

#8


private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
InitForm();
}
}
private void InitForm()
{
dgName.DataSource=ds.Tables[0].DefaultView;           
dgName.DataBind();  
}

#9


非常同意以下观点

----------------------------------------------------------
sp1234(上帝赐我个红娘吧)
 
你事先要看你的page_load是在页面内的还是控件内的。

如果是在页面内的,只有客户端发送了两次命令请求才可能。
----------------------------------------------------------

#10


我也认为是DataGrid执行时要刷新

#11


代码贴得太少了  错误没有暴露给大家啊

#12


真奇怪。。楼主。把全部代码贴出来。分析分析

#13


to  studydotnet(乐于助人,开心接分!) :
我做过测试了,我屏蔽了DataGrid的数据绑定,则没有第二次执行if(!Page.IsPostBack)
怎么才能避免在DataGrid的数据绑定时不执行刷新呢?

#14


代码如下:
CCPlan objPlan;

static string strKeyWord;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
CCDBO objConn=new CCDBO();

SqlConnection pCn=objConn.GetConnection();

objPlan=new CCPlan(pCn);

if(!Page.IsPostBack)
{
strKeyWord="";
InitForm();
}
}

private void InitForm()
{
if(strKeyWord!=txtKey.Text.Trim())
{
strKeyWord=txtKey.Text.Trim();
dg.CurrentPageIndex=0; 
}

DataSet ds=objPlan.GetItemInfo(strKeyWord); 

if(ds!=null)
{
dg.DataSource=ds.Tables[0].DefaultView; 
            
dg.DataBind(); 

}
}

#15



可能是Request了两次了吧,应该不是什么大问题!

#16


怎么才能避免在DataGrid的数据绑定时不执行刷新呢?

#17


这样的问题有遇到过.不过感觉没什么影响...等待2005.看看是否有改进

#18


数据榜定是要postback的,不然只能用ajax的方法了。

#19


应该是Page_Load执行两次,
strKeyWord="";
InitForm();
只执行一次吧?

#20


路過...

#21


按照上面的代码,应该执行一次的。你跟踪一下吧。

#22


为什么程序会连续两次访问Page_Load(),并且都执行了if(!Page.IsPostBack)?

----

说明客户端有两次请求,而不是datagrid绑定造成刷新的,如果if(!Page.IsPostBack)判断中的方法也被执行,则说明客户端执行了location的转向,比如客户端的location.href=''或服务器端的response.Redirect

datagrid的databind方法只负责render对应的html,当页面完全render完成之后一次呈现给客户端的。

#23


同意上楼,应该是请求了两次

#24


to   Truly():

我的代码就是上面的那些,你认为那些是"则说明客户端执行了location的转向,比如客户端的location.href=''或服务器端的response.Redirect"????

#25


按照上面的代码,应该执行一次的。你跟踪一下吧。