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 ,运行良好,不会导致完全回发!

请帮帮我。我花了太多时间在上面,似乎没有任何效果!

谢谢,

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

显然,中继器中的控件不会自动注册...所以我需要将它们中的每一个都添加到脚本管理器中!

希望它会对那里的人有所帮助......

于 2012-07-30T08:02:08.500 回答
0

asp.net 不知道如何PageClicked在客户端跟踪您的事件。所以触发条件触发器不会发生。

如果此事件对应于自定义控件中的按钮或链接按钮的事件,则公开该事件,更新面板将使用它来跟踪客户端的事件。

不太习惯 VB,这是您在 c# 中公开事件的方式

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