2012-04-24 7 views
1

私は更新パネルを使って1ページにグリッドビューを持つシステムを持っています。グリッドビューの1行を選択すると、そのCommandNameとCommandArgumentを使用して選択した行をポストバックし、選択した行をポストした行のIDとしてSession変数を設定します。他のコントロールはAsyncを正しく実行し、問題のボタンはRowDataBoundイベントでこれを使用して既に登録されています。ポストバックイベントの後に最終関数vbを実行することはできますか?

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

このセッションをbuttonコマンドで取得して、何らかの形でマスターページ内でラベルを現在のセッションに設定したいと考えています。 imbSelectでコードがあるコマンド:マスターページ内

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

とにかくPage_Loadの後に関数を呼び出すのがあり、それがすべてのポストバックイベントを解決した後?

ありがとうございました。すべてのポストバックイベントが

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

    End Sub 

を完了した後、事前にレンダリング

+0

[LoadComplete](http://msdn.microsoft.com/en-us/library/system.web.ui.page.loadcomplete.aspx)または[PreRenderComplete](http:// msdn)を試したことがありますか。 microsoft.com/en-us/library/system.web.ui.page.prerendercomplete.aspx)event? –

+0

タイトルの最後の呼び出しがmasterpage内にありますが、LoadCompleteまたはPreRenderCompleteがmasterpage内のメソッドではないと思いますか? – FirstCape

答えて

1

あなたのマスターページがどうなるか、別の方法は、あなたのマスターページにプロパティを作成し、あなたの方法から直接それを更新することです

 '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 

また別の方法は、バブルイベントを発生させることです。彼らは私が持っている

+0

ありがとう、私はPreRenderと私の答えの組み合わせを使用しましたが、あなたの問題は他にも起こりうる問題に最も近いものでした。 – FirstCape

0

(ちょうどバブルイベントを高め、ハンドリングのいくつかの例については、Google)あなたのマスターページにOnBubbleEvent

RaiseBubbleEvent(Me, e) 

は次に、あなたをオーバーライドする必要があり、あなたのマスターページに向けhirarchyをメッセージを渡すために便利なバックアップしています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() 

e PageSetTitles機能は、セッション変数を取得し、これを含めながら

内のラベルを設定します。

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

をページで。

関連する問題