Har följande, x antal usercontrols i 1st placeholder kontroll, berondende på användarens val sätts en uc till visible = true. Nej det är onödigt att använda en PlaceHolder för varje kontroll. Ja, för att kunna dölja alla dessa kontroller och visa någon annan kontroll. .NET har inte gjorts för att man ska behöva göra skräddarsydda omvägar för att få enkla saker att fungera med stor risk att det slutligen inte kommer att göra det. Du måste skapa en reference till userkontrollen med hjälp av FindControl. User kontrollen har ju en visible property som du bara behöver ställa in i code behind för att visa eller dölja den under olika omständigheter. Ville bara tacka för detta inlägg, har nu löst ett jätteproblem ... tack :) Ännu enklare är att skrivaVisa / dölja usercontrol.
Min fråga: Är det bättra att använda separata placeholder objekt för varje usercontrol?
Nu körs ju koden för alla userkontroller, för att undevika detta ska jag ladda dem dynamiskt, eller?
<asp:PlaceHolder ID="PlaceHolderMain" Runat="server">
<Mode:uc_Left id="uc_Left" runat="server" visible="false"/>
<Mode:uc_Right id="uc_Right" runat="server" visble="false"/>
<Mode:uc_Top id="uc_Top" runat="server" visible="false"/>
......
Sv: Visa / dölja usercontrol.
Min fråga är behöver du verkligen använda en PlaceHolder för dina andra kontroller!?
Mvh Fredrik Normén NSQUARED2
http://fredrik.nsquared2.comSv: Visa / dölja usercontrol.
Förstår att du fråga, men tog inte med all kod här.
Det jag tycker är lite knepigt är att även om jag sätter en kontroll som visible = false;
körs ju koden.Sv: Visa / dölja usercontrol.
Här kommer ett komplett kodexempel:
<code>
Public Class WebForm1
Inherits System.Web.UI.Page
Protected TestControl As uctrlTest
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
TestControl = DirectCast(FindControl("Test1"), uctrlTest)
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TestControl.Visible = False
End Sub
End Class
</code>Sv:Visa / dölja usercontrol.
Sv: Visa / dölja usercontrol.
<code>
Protected uctrlTest As uctrlTest
</code>
För då får du faktiskt möjlighet att skriva uctrlTest.Visible = false utan att behöva skapa en referens med att söka upp objektet. Viktigt där är att man inte får skriva protected x as uctrlTest. Dvs, du måste ange samma namn på båda ställen.