简单的按钮动作

Sky*_*ell 1 .net vb.net asp.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
Run Code Online (Sandbox Code Playgroud)

我在这里查看会话:

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
Run Code Online (Sandbox Code Playgroud)

JDB*_*JDB 5

我的猜测是你在引用它设置你的Session变量.

例如,如果您在Page_Load中使用该变量,那么在第一次单击时,该值将False默认为(导致您不渲染图像).在Page_Load事件完成后,将触发单击事件处理程序,将会话变量设置为True.但是,由于Page_Load已经完成,因此在再次调用Page_Load之后(第二次回发)之前,您将看不到图像.

这只是当您没有密切关注页面生命周期时可能发生的事情的一个示例.由于我们无法看到您的代码,因此无法确切知道逻辑错误发生的位置.

有关事件顺序的更多信息,请参见ASP.NET页面生命周期.


编辑
您可能需要将一些逻辑从Page_Load移动到Page_LoadComplete事件.在处理完控件事件后,LoadComplete通常是进行数据绑定等的最佳位置.

要在下面的评论中回答您的问题,会话处理实际上在适当的位置.我看不到你在哪里打电话GridView1.DataBind(),但很可能是代码不在正确的地方.将DataBind调用移动到LoadComplete页面事件,您应该设置.