私は、UpdatePanelのGridViewのPagerRowに一連のLinkButtonを追加しようとしています。 RowCreatedイベントを使用してこれらをインスタンス化して追加しています。私が持っている問題は、クリックハンドラは2回目だけであるということです。ポストバックの動的コントロール
私は、私が
Dim lnkSize = New LinkButton() With { _,
.Text = size.ToString(), _
.CommandArgument = size.ToString(), _
.ID = "pageSizer" & size
}
AddHandler lnkSize.Click, AddressOf lnkPageSize_Click ' an EventHandler which just changes pagesize based on CommandArgument
liSize.Controls.Add(lnkSize)
GridViewPageSizer
継承HtmlGenericControlを使用していLinkButtons自分自身を作成するには
Protected Sub grd_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If (e.Row.RowType = DataControlRowType.Pager) Then
Dim pageSizer = New GridViewPageSizer(grdItems)
e.Row.Cells(0).Controls.AddAt(0, pageSizer)
End If
End Sub
を使用してLinkButtonsを作成し、各ボタンのクリックのイベントハンドラを追加します。すべてのポストバックでページャの行が再作成されるので、古いボタンは新しいセットに置き換えられ、イベントハンドラは2回目のクリックでのみ起動されます。 IsPostBackをチェックすると、最初のクリック後にボタンが消えます。ボタンをクリックしてページサイズを変更した後にグリッドを再バインドしてみましたが、同じことが起こります。これを回避する方法はありますか?
Page_Initのコントロールにアクセスできないため、問題があります。それらはUserControlにあり、UserControlがPage_Initの後のDataBoundになるまでBottomPagerRowはありません。 – Echilon