是否有可能在回发事件后运行最终函数vb?

时间:2012-04-24 12:32:04

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

我的系统在一个页面上有一个带有更新面板的网格视图。在选择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之后调用函数,并在解决了所有回发事件之后?

感谢。

2 个答案:

答案 0 :(得分: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

或另一种方式是举起泡沫事件。它们可以方便地将消息传递回主页上的hirarchy

    RaiseBubbleEvent(Me, e)

然后在你的母版页上覆盖你的OnBubbleEvent(只是谷歌提供一些提升和处理泡沫事件的例子)

答案 1 :(得分:0)

我已经设法使用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"  %>

在页面中。