Webpart Connections asp.net VB - PullRequest
       10

Webpart Connections asp.net VB

2 голосов
/ 12 февраля 2009

У меня возникла следующая проблема с веб-частями vb.net asp.net. Я пытаюсь создать статическую связь между веб-частями, но я столкнулся с проблемой, а именно:

Не удалось найти веб-часть поставщика соединения с идентификатором 'Ucl_Diary_Summary1'

У меня есть следующее, определенное как iterface:

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

В качестве моего провайдера (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>

Я могу предположить, что это только потому, что у меня есть мои веб-части - usercontrol, обернутый в панель (используется для прокрутки), а также панель обновления, которую я использую для обновления, так как мне заставить ее увидеть пользовательский контроль?

Заранее спасибо.

Джеймс.

Ответы [ 2 ]

1 голос
/ 17 февраля 2009

В конце концов я нашел свою проблему / решение.

Роб, вы правы, мне нужно было передать экземпляр объекта, реализующего интерфейс, но вы также не можете ссылаться на пользовательский элемент управления для статического соединения, которое является потомком двух других элементов управления, а именно панели и панели обновления. Я делал все это неправильно. Я изменил его так, чтобы панель обновлений была внутри пользовательского элемента управления, а не на странице по умолчанию. Таким образом, все конкретные компоненты (веб-части) являются автономными.

Также, возвращаясь к исходному элементу возврата экземпляра, я заменил следующее:

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

Надеюсь, это кому-нибудь поможет!

Джеймс.

1 голос
/ 17 февраля 2009

У меня не было возможности подробно рассмотреть ваше сообщение, но проблема, похоже, связана с вашим провайдером. Он должен возвращать объект, который реализует интерфейс, используемый для связи с потребителем (обычно это ссылка на себя).

Проверьте следующий ресурс для получения дополнительной информации:

Представление подключений веб-частей ASP.NET

...