我正在使用下面的代码来确定页面是否应该显示图像。该按钮有时“有效”,但有时需要2或3次点击才能显示图像。
我错过了什么吗?
Private Sub btnViewAll_Click(sender As Object, e As System.EventArgs) Handles btnViewAll.Click
If Session("fullPage") IsNot Nothing Then
If CInt(Session("fullPage")) = 0 Then
Session("fullPage") = 1
Else
Session("fullPage") = 0
End If
Else
Session("fullPage") = 1
End If
End Sub
我在这里查看会话:
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvFolders.RowDataBound
If CInt(Session("fullPage")) = 1 Then
...load images....
End If
End Sub
答案 0 :(得分:5)
我的猜测是你在之后设置你的Session变量。
例如,如果您正在使用Page_Load中的变量,那么在第一次单击时,默认情况下该值将为False
(导致您无法渲染图像)。在Page_Load事件完成后,将触发单击事件处理程序,将会话变量设置为True
。但是,由于Page_Load已经完成,因此在再次调用Page_Load之后(第二次回发),您将看不到图像。
这只是您未密切关注页面生命周期时可能发生的一个示例。由于我们无法看到您的代码,因此无法确切知道逻辑错误发生的位置。
有关事件顺序的详细信息,请参阅ASP.NET Page Life Cycle。
修改强>
您可能需要将一些逻辑从Page_Load移动到Page_LoadComplete事件。在处理完控件事件后,LoadComplete通常是进行数据绑定等的最佳位置。
要在下面的评论中回答您的问题,会话处理实际上在适当的位置。我无法看到您在哪里调用GridView1.DataBind()
,但很可能是代码不在正确的位置。将DataBind
调用移至LoadComplete页面事件,您应该进行设置。