Webpart Connections asp.net VB

时间:2009-02-12 16:57:51

标签: asp.net vb.net web-parts

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

  

找不到ID为“Ucl_Diary_Summary1”

的连接提供程序Web部件

我将以下内容定义为我的表面:

Public Interface IDiaryPartsProvider

    function Test as String

End Interface

我有以下作为我的消费者(UserControl):

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

我将以下定义为我的Provider(UserControl):

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,所以如何让它看到用户控件?

提前致谢。

詹姆斯。

2 个答案:

答案 0 :(得分:1)

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

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

Introducing ASP.NET Web Part Connections

答案 1 :(得分: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

希望这可以帮助别人!

詹姆斯。