L'esempio che ho fatto è questo:
Pagina ASPX con i due UC: (ho usato una label sulla pagina principale per simulare il DB)
codice:
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>
</p>
<asp:PlaceHolder ID="ph2" runat="server"></asp:PlaceHolder>
</div>
(Prodotti nella tabella carrello:
<asp:Label ID="lbContaHidden" runat="server" Text="0" ForeColor="#cccccc"></asp:Label>)
</form>
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Dim Novita As UserControl = LoadControl("due.ascx")
ph2.Controls.Add(Novita)
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Shopping As UserControl = LoadControl("uno.ascx")
ph1.Controls.Add(Shopping)
End Sub
Usercontrol UNO (Listview che incrementa i prodotti in tabella):
codice:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="uno.ascx.vb" Inherits="usercontrols_uno" %>
<asp:Button ID="btnAdd" runat="server" Text="Incrementa" />
Partial Class usercontrols_uno
Inherits System.Web.UI.UserControl
Public n As Integer
Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
n = CInt(CType(Me.Page.FindControl("lbContaHidden"), Label).Text)
CType(Me.Page.FindControl("lbContaHidden"), Label).Text = CStr(n + 1)
End Sub
End Class
Usercontrol DUE (Riepilogo del carrello):
codice:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="due.ascx.vb" Inherits="usercontrols_due" %>
IN CARRELLO:<asp:Label ID="lbConta" runat="server"></asp:Label>
Partial Class usercontrols_due
Inherits System.Web.UI.UserControl
Public prodotti As Integer
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
prodotti = CInt(CType(Me.Page.FindControl("lbContaHidden"), Label).Text)
lbConta.Text = CStr(prodotti)
End Sub
End Class
E le due labels sono perfettamente sincronizzate.