2

我对 vb.net asp.net webparts 有以下问题。我试图在 webparts 之间创建一个静态连接,但我遇到了一个问题,即:

找不到 ID 为“Ucl_Diary_Summary1”的连接提供程序 Web 部件

我将以下内容定义为我的 iterface:

Public Interface IDiaryPartsProvider

    function Test as String

End Interface

我有以下作为我的消费者(用户控件):

Partial Class UsrCtrls_Diary_ucl_DiaryAwaitingReview
    Inherits System.Web.UI.UserControl

    <ConnectionConsumer("Test", "myID")> _
    Public Sub GetTextTransferInterface(ByVal provider As IDiaryPartsProvider)
        Dim a As String = provider.Test()
        UserMsgBox(a.ToString, Me.Page)
    End Sub

End Class

我将以下内容定义为我的提供者(用户控件):

Partial Class UsrCtrls_Diary_Diary_Summary
    Inherits System.Web.UI.UserControl

    Implements IWebPart, IDiaryPartsProvider

    <ConnectionProvider("myID")> _
    Public Function Test() As String Implements IDiaryPartsProvider.Test
        Return "this is a test"
    End Function
End Class

我的 default.aspx 如下:

<%@ Register Src="UsrCtrls/Diary/ucl_Diary_Summary.ascx" TagName="ucl_Diary_Summary"
    TagPrefix="uc4" %>
<%@ Register Src="UsrCtrls/Diary/ucl_DiaryAwaitingReview.ascx" TagName="ucl_DiaryAwaitingReview"
    TagPrefix="uc5" %>

<asp:WebPartManager ID="WebPartManager1" runat="server">
            <StaticConnections>
                <asp:WebPartConnection ID="cnn"
                ConsumerID="Ucl_DiaryAwaitingReview1"
                ProviderID="Ucl_Diary_Summary1"
                />
            </StaticConnections>
        </asp:WebPartManager>

<asp:WebPartZone ID="zoneDiaryTopLeft" runat="server" EmptyZoneText="Add WebPart Here" DragHighlightColor="#454777" HeaderText=" ">

                                    <ZoneTemplate>
                                    <asp:Panel ID="pnl1" runat="server" title="Claims Awaiting Review">
                                    <asp:UpdatePanel ID="udp_TopLeft" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                                    <ContentTemplate>
                                        <uc5:ucl_DiaryAwaitingReview ID="Ucl_DiaryAwaitingReview1" runat="server" title="Claims Awaiting Review" />
                                        </ContentTemplate>
                                    </asp:UpdatePanel>
                                    </asp:Panel>
                                    </ZoneTemplate>
</asp:WebPartZone>

<asp:WebPartZone ID="zoneDiaryTopRight" runat="server" EmptyZoneText="Add WebPart Here" DragHighlightColor="#454777" HeaderText=" ">
                        <ZoneTemplate>
                        <asp:Panel ID="PNL2" runat="server" title="Diary Summary">
                       <asp:UpdatePanel ID="udp_TopRight" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                        <ContentTemplate>
                            <uc4:ucl_Diary_Summary ID="Ucl_Diary_Summary1" runat="server" Title="Diary Summary" />
                        </ContentTemplate>
                        </asp:UpdatePanel>
                        </asp:Panel>
                        </ZoneTemplate>
</asp:WebPartZone>

我只能假设它是因为我有我的 webparts - usercontrol 包装在一个面板中(用于滚动),还有一个我用来刷新的 updatepanel,那么我如何让它看到 usercontrol?

提前致谢。

詹姆士。

4

2 回答 2

1

我没有机会详细查看您的消息,但问题似乎与您的提供商有关。它应该返回一个对象,该对象实现了用于与消费者通信的接口(通常是对自身的引用)。

查看以下资源以获取更多信息:

介绍 ASP.NET Web 部件连接

于 2009-02-17T04:46:12.390 回答
1

我最终发现了我的问题/解决方案。

Rob,你是对的,我需要传回实现接口的对象的实例,而且,您不能为静态连接引用用户控件,该静态连接是其他两个控件的子控件,即面板和更新面板。我做这一切都错了。我对其进行了更改,以便更新面板位于用户控件内而不是默认页面上。这样,所有特定(Web 部件)组件都是自包含的。

另外,回到返回实例的原始项目,我替换了以下内容:

Public Function Test() As String Implements IDiaryPartsProvider.Test
    Return "this is a test"
End Function

和:

   <ConnectionProvider("myID")> _
Public Function Test() As IDiaryPartsProvider
    Return me
End Function


Public ReadOnly Property Test() As String Implements IDiaryPartsProvider.Test
    Get
        Return "This is a test"
    End Get
End Property

希望这可以帮助某人!

詹姆士。

于 2009-02-17T11:43:39.360 回答