2

vb.net asp.net Webパーツで次の問題が発生しています。Webパーツ間の静的接続を作成しようとしていますが、問題が発生しています。

ID 'Ucl_Diary_Summary1' の接続プロバイダー Web パーツが見つかりませんでした

私は 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>

Webパーツ(スクロールに使用される)にラップされたユーザーコントロールと、更新に使用する更新パネルがあるため、それを想定することしかできません。ユーザーコントロールを表示するにはどうすればよいですか?

前もって感謝します。

ジェームズ。

4

2 に答える 2

1

あなたのメッセージを詳しく見る機会はありませんでしたが、問題はプロバイダーにあるようです. コンシューマーへの通信に使用されるインターフェースを実装するオブジェクトを返す必要があります (通常はそれ自体への参照)。

詳細については、次のリソースを確認してください。

ASP.NET Web パーツ接続の概要

于 2009-02-17T04:46:12.390 に答える
1

最終的に自分の問題/解決策を見つけました。

インターフェイスを実装するオブジェクトのインスタンスを返す必要がありましたが、他の 2 つのコントロール、つまりパネルと更新パネルの子である静的接続のユーザー コントロールを参照することはできません。私はこれをすべて間違っていました。更新パネルがデフォルト ページではなくユーザー コントロール内にあるように変更しました。そうすれば、特定の (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 に答える