0

私は以前にこの質問を見たことがありますが、どの答えも私にはうまくいかないようです。これは私のupdatePanelセクション(hi.ascx内)です:

<asp:UpdatePanel runat="server" ID="upUL" UpdateMode="Conditional" >
<ContentTemplate>

..。

            <Angel:Pager id="pager" runat="server" OnPageClicked="Pager_PageSelected" />
        <!--End of control div-->
</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="lbBlock" />
    <asp:AsyncPostBackTrigger ControlID="lbUnblock" />
    <asp:AsyncPostBackTrigger ControlID="pager" EventName="PageClicked" />
</Triggers>
</asp:UpdatePanel>

これがPager.ascx.vb内のコードです。

Public Delegate Sub ClickPage(sender As Object, e As PageClickedEventArgs)
Public Event PageClicked As ClickPage

Public Class PageClickedEventArgs
    Inherits EventArgs
    Public Property PageNumber() As Integer
End Class

...。

Protected Sub rpPaging_Click(ByVal sender As Object, ByVal e As CommandEventArgs)
    Dim pageNum As Integer
    Integer.TryParse(e.CommandArgument.ToString(), pageNum)
    If (pageNum <> 0) Then
        Dim args As New PageClickedEventArgs
        args.PageNumber = pageNum
        RaiseEvent PageClicked(sender, args)
    End If
    'SelectNewPage(pageNum)
End Sub

そして最後に、これはhi.ascx.vbページの私のコードです。

    Public Sub Pager_PageSelected(sender As Object, ByVal e As    Paging.PageClickedEventArgs)
        BindData(False, e.PageNumber)
    End Sub

タイトルで述べたように。pager.ascxからイベントを発生させると、完全なポストバックが発生します(うまく機能しますが、Ajaxに入れたかったのです)。
lbBlockやlbUnblockなど、この更新パネル内の他のコントロール(LinkBut​​tons)は正常に機能しており、完全なポストバックを引き起こしていません。

助けてください。私はそれにあまりにも多くの時間を費やしました、そして何もうまくいかないようです!

ありがとう、

4

2 に答える 2

3

それは問題を解決しました:

    Protected Sub rpPaging_onItemCreated(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)

    Dim lb = e.Item.FindControl("lbPage")
    If lb IsNot Nothing Then _
        ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(lb)

End Sub

どうやら、リピーター内のコントロールは自動的に登録されないようです...だから私はそれらのそれぞれをscriptmanagerに追加する必要がありました!

それが誰かに役立つことを願っています...

于 2012-07-30T08:02:08.500 に答える
0

PageClickedasp.netは、クライアント側でイベントを追跡する方法を知りません。したがって、条件付きトリガーの起動は発生しません。

このイベントがカスタムコントロールのボタンまたはリンクボタンのイベントに対応している場合は、そのイベントを公開すると、更新パネルはそれを使用してクライアント側のイベントを追跡します。

VBにはあまり慣れていませんが、これがC#でイベントを公開する方法です。

public event EventHandler PageChanged
{
    add { grd.PageChanged += value; }
    remove { grd.PageChanged -= value; }
}
于 2012-07-26T06:14:39.177 に答える