kullanıcı kontrol sayfasına ait değil ya açıkça dahil sayfadan usercontrol bir özelliği ayarlamak veya bir özyinelemeli fonksiyon oluşturmak sürece, doğrudan erişemez o tüm üst nesnelerinin aracılığıyla döngüleri System.Web.UI.Page
türünde bir nesne bulana kadar. İlk İçin
, bir özelliği kullanabilirsiniz kullanıcı kontrolünde (I adlı bir özellik
ParentForm
kullanarak yaptık): "Ana" sayfasında
Private _parentForm as System.Web.UI.Page
Public Property ParentForm() As System.Web.UI.Page ' or the type of your page baseclass
Get
Return _parentForm
End Get
Set
_parentForm = value
End Set
End Property
, sen bu özelliği ayarlamak istiyorum mümkün olduğunca erken bir olay. PreLoad'u kullanmayı tercih ediyorum çünkü yükten önce geliyor (böylece diğer kontrollerin çoğuna ihtiyaç duyulduğunda kullanılabilir) ve init'ten sonra.
Protected Sub Page_PreLoad(ByVal sender as Object, ByVal e as EventArgs) Handles Me.PreLoad
Me.myUserControlID.ParentForm = Me
End Sub
Ayrıca, sayfayı bulmak için üst denetimler arasında bir işlev trolü yazabilirsiniz. Aşağıdaki kodlar test edilmemiştir, bu yüzden ince ayar gerektirebilir, ancak fikir doğrudur.
Public Shared Function FindParentPage(ByRef ctrl As Object) As Page
If "System.Web.UI.Page".Equals(ctrl.GetType().FullName, StringComparison.OrdinalIgnoreCase) Then
Return ctrl
Else
Return FindParentPage(ctrl.Parent)
End If
End Function
DÜZENLEME: Bu tip System.Web.UI.Page
içinde var olmadığı için doğrudan da bu özelliği erişemez. @Tim SCHMELTER önerir olarak, belirli Sayfa türüne _Default
sayfayı yayınlama denemenizde verebilir veya bu bu sayfaların çoğuna ortak bir şeyse, bir temel sayfa sınıf oluşturmak gerekiyor ve bu sınıfta mülkünüzü içerebilir. Sonra sayfasında Sonra yerine
Public Class MyBasePage
Inherits System.Web.UI.Page
Public Property SelectedID() as Integer
...
End Property
End Class
System.Web.UI.Page
bu sınıfı devralabilir:
Partial Class _Default
Inherits MyBasePage
...
End Class
Teşekkür Tim, Tavsiyene aldı. Kontrolüm için bir kamu mülkünü ekledim ve bunu dinamik olarak eklediğimde sayfasından ayarladım! – s15199d