私は完全に動的に生成されたページを持っており、基本的にUpdatePanelのビューを切り替えるリンクボタンがあります。更新パネルのデータを操作するための関数を呼び出す必要があるボタンが生成されている場合を除いて、これは素晴らしいことです。動的ASP.Net UpdatePanel独自のAsyncPostbackを組み込む内容
.aspxの
<div>
<asp:panel runat="server" ID="buttons" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
</div>
コード
Private Sub testpage_Init(sender As Object, e As System.EventArgs) Handles Me.Init
For i As Integer = 0 To 5 'create a few dummy buttons
Dim Btn As New LinkButton
Btn.ID = "btn" & i.ToString
Btn.Text = i.ToString
AddHandler Btn.Click, AddressOf btn_Click
buttons.Controls.Add(Btn)
Dim Trgr As New AsyncPostBackTrigger 'async link them to the updatepanel
Trgr.ControlID = Btn.ID
UpdatePanel1.Triggers.Add(Trgr)
Next
End Sub
Private Sub btn_Click(sender As Object, e As System.EventArgs)
ScriptManager.GetCurrent(Me.Page).AddHistoryPoint(sender.id.ToString, sender.id.ToString, sender.id.ToString)
UpdatePanel1.ContentTemplateContainer.Controls.Add(New LiteralControl(sender.id.ToString)) 'Show it got clicked
If sender.id.ToString = "btn1" Then
Dim Btn As New Button
Btn.ID = "test"
Btn.Text = "Click me"
AddHandler Btn.Click, AddressOf subbtn_Click
UpdatePanel1.ContentTemplateContainer.Controls.Add(Btn)
End If
End Sub
Private Sub subbtn_Click(sender As Object, e As System.EventArgs)
UpdatePanel1.ContentTemplateContainer.Controls.Add(New LiteralControl("It doesn't work"))
End Sub
の後ろだから、問題はpage_initが実行されると、それはそれは、ボタンを再作成したことがないので、選択したLinkButtonコントロールを知らないで、イベントを起こすことはありません。私は人々がコントロールや現在のフレームのリストを保存するためにセッションを使用しているのを見ましたが、私はこれを許容可能な解決策として見ません。確かにこれを行う方法がなければなりません。
Navigateイベントの外でScriptManagerの現在の/前のステップ情報を取得する方法はありませんか?
最新のajaxツールキットを使用したAsp.net 4.0。
ありがとうございました。
ああ、唯一のアイデアは、ボタンIDにどのセクションが選択されたかを知るために必要な情報が含まれるようにすることでした。私はカスタムビューステートのものを作ったことがないので、initの中でそのデータにアクセスする方法がないことは気づいていませんでした。私はあなたがそれがロードされるまで待たなければならないと思った。私はそれを調べなければならないでしょう。 – jheizer
Viewstateには 'LoadViewState'イベントがありませんが、' Page_Load'の前にいつでもコントロールを再作成することができ、イベントはまだ起動されます。正直なところ、IDで何かをエンコードすることができれば、はるかに簡単です。 –
ボタンIDのような音は、行く方法です。私は2つのアイデアのうち1つを思いついたが、それは唯一の選択肢だと思う。私は思う明日に行くと思う。 – jheizer