1

更新パネルのある 1 つのページにグリッドビューがあるシステムがあります。グリッドビューの 1 つの行を選択すると、システムはその CommandName と CommandArgument を使用してポストバックし、選択された行をポストしてから、ポストされた選択された行の 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 の後、すべての Postback イベントを解決した後に関数を呼び出す方法はありますか?

ありがとう。

4

2 に答える 2

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 をオーバーライドします (バブル イベントの発生と処理の例については、グーグルで検索してください)。

于 2012-04-24T16:09:43.227 に答える
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"  %>

ページ内。

于 2012-04-25T07:33:40.200 に答える