2009-02-12 70 views
2

我有以下问题与vb.net asp.net webparts。我试着去创造的webpart,但运行到一个问题,即IM之间的静态连接:Webpart连接asp.net VB

找不到与连接提供商的Web部件ID“Ucl_Diary_Summary1”

我有以下定义为我的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> 

我只能假设它的,因为我有我的webpart - 用户控件包裹在一个面板(用于滚动),还有一个我用来刷新的更新面板,那么如何获取它以查看usercontrol?

在此先感谢。

James。

回答

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 

希望这可以帮助别人!

James。

+0

嗨James, 很高兴我能帮到你。 您应该将我的回复或后续行动标记为答案,否则系统将继续将此问题显示为未答复。 – 2009-02-23 22:22:13

1

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

退房更多信息以下资源:

Introducing ASP.NET Web Part Connections