【问题标题】:Is it possible to run a final function vb after Postback Event?回发事件后是否可以运行最终函数 vb?
【发布时间】:2012-04-24 12:32:04
【问题描述】:

我有一个系统,它在一个页面上有一个带有更新面板的网格视图。在选择 gridview 的一行时,系统使用该 CommandName 和 CommandArgument 回发以发布所选行,然后将 Session 变量设置为发布的所选行的 ID。其他控件正确运行 Async,并且相关按钮已在 RowDataBound 事件上使用此注册。

Dim gvRowSelect As GridViewRow = e.Row   
Dim imbSelect As ImageButton = DirectCast(gvRowSelect.FindControl("imbSelect"), ImageButton)
ScriptManager.GetCurrent(Page).RegisterPostBackControl(imbSelect)

我想尝试在按钮命令上获取此会话,并以某种方式在母版页中为当前会话设置标签。在 imbSelect 命令上的代码是:

Dim cellSnapshot As TableCell = gvSnapshots.Rows(e.CommandArgument).Cells(0)
Session("Snapshot") = cellSnapshot.Text

在主页面内是否有在 Page_Load 之后调用函数,并且在它解决了所有回发事件之后?

谢谢。

【问题讨论】:

  • 您尝试过LoadCompletePreRenderComplete 事件吗?
  • 标题的最终调用是在母版页内,我不认为 LoadComplete 或 PreRenderComplete 是母版页内的方法?

标签: vb.net gridview asynchronous postback master-pages


【解决方案1】:

您的母版页预渲染将在所有回发事件完成后进行

     Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)        Handles Me.PreRender

     End Sub

或者另一种方法是在您的母版页上创建一个属性并直接从您的方法更新它

     'On your master page
     Private _myValue As String             'If you want the master page to remember this between postbacks use an asp:HiddenField instead of a string, or store it in the Session
     Public Property MyProperty() As String
        Get
            Return _myValue
        End Get
        Set(ByVal value)
            _myValue = value
        End Set
     End Property

    'On your userControl or Page
    CType(Me.Master, MyMasterPage).MyProperty

或者另一种方式是引发泡沫事件。它们可以方便地将消息传递到您的母版页的层次结构

    RaiseBubbleEvent(Me, e)

然后在您的母版页上覆盖您的 OnBubbleEvent(只需 google 以获取一些引发和处理气泡事件的示例)

【讨论】:

  • 谢谢,我使用了 PreRender 和我的答案的组合,但是您的答案最接近可能发生的其他问题。
【解决方案2】:

我已经设法通过结合 MSDN 上的一些隐藏知识来解决这个问题。

http://msdn.microsoft.com/en-us/library/xxwa0ff0.aspx

这显示了如何创建对母版页的引用,所以我所要做的就是在母版页上创建一个在其他任何地方都没有引用的函数。然后当触发按钮事件时:

Dim cellSnapshot As TableCell = gvSnapshots.Rows(e.CommandArgument).Cells(0)    
Session("Snapshot") = cellSnapshot.Text    
gvSnapshots.DataBind()    
Master.PageSetTitles()

即PageSetTitles 函数获取 Session 变量并在

中设置标签

虽然包括这个:

<%@ MasterType VirtualPath="~/MasterPages/Site.Master"  %>

在页面中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多