简单的按钮动作

时间:2012-10-08 18:08:52

标签: asp.net .net vb.net

我正在使用下面的代码来确定页面是否应该显示图像。该按钮有时“有效”,但有时需要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

1 个答案:

答案 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页面事件,您应该进行设置。