我对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,所以如何让它看到用户控件?
提前致谢。
詹姆斯。
答案 0 :(得分:1)
我没有机会详细查看您的邮件,但问题似乎与您的提供商有关。它应该返回一个实现用于与消费者通信的接口的对象(通常是对它自己的引用)。
查看以下资源以获取更多信息:
答案 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
希望这可以帮助别人!
詹姆斯。