Skapa Get/Set properties för Labeln i din UC, precis som man gör i en klass.
Om jag ska komma åt en label "som ligger i en UC" från min *aspx sida t.ex. "myLabel.Visible = true;" Hur gör man det?
12 svar · 359 visningar · startad av maqe
Om jag ska komma åt en label "som ligger i en UC" från min *aspx sida t.ex. "myLabel.Visible = true;" Hur gör man det?
Skapa Get/Set properties för Labeln i din UC, precis som man gör i en klass.
Aha okay ... tackar ...
Om du lägger Labeln som Public i din UC tror jag även att du kommer åt den direkt utan Properties, men om man ska tänka riktig OO så bör man använda properties.
hm ... jag får ingen av dom alternativen att fungera ...
Första alternativet med properties ser ut såhär
Detta är i min UC:
public bool myProperty
{
get
{
return Price.Visible;
}
set
{
Price.Visible = value;
}
}
Detta min *.aspx:
modules.product myProduct = new Treeview.modules.product();
myProduct.myProperty(true);
Jag har säkert tänkt eller gjort fel, får detta fel: 'Treeview.modules.product.myProperty' denotes a 'property' where a 'method' was expected
Och om jag sätter min label public så ser det ut såhär i min *.aspx:
modules.product isVisible = new Treeview.modules.product();
isVisible.Price.Visible = true;
Med detta felmeddelande: Objektreferensen har inte angetts till en instans av ett objekt.
För min del så kan jag gärna använda mig av en public label i detta fall
Nix.
Såhär försöker jag använda den i min *.aspx sida
modules.product isVisible = new Treeview.modules.product();
isVisible.Price.Visible = true;
Och får då detta meddelande:
Ett undantagsfel av typen System.StackOverflowException inträffade.
Om vi återgår till ditt förra exempel så är felet att den vill ha en method istället för en property.
Så lägg in en funktion istället där du skickar in True/False och sätter labelns.visible = värdet.
Jag är lite osäker på om C# hanterar properties annorlunda än VB.NET i det här fallet. Jag jobbar mest i VB.NET.
Kolla gärna in koden för min EmailTextBoxControl. Där använder jag Get/Set properties för mina Labels.
http://www.pdc.se/blog/DisplayEntry.aspx?eid=25
Jag tror problemet är att labeln ligger i en datalist? Någon som vet vad man ska ha för approach till detta problem?
nu förstår jag inte riktigt sammanhanget av alla koder, men om jag förståt det rätt så vill du kunna ändra om din label ska vara visible eller inte?
använd funktion som PDahlen säger.
Ja jag vill ändra en label så den blir visible = false. Och detta vill jag göra från min default.aspx sida som har en placeholder och i den placeholdern laddar jag en UC som i sin tur innehåller en datalist med denna kontrollen. Jag gjorde såhär men det kanske är en ful lösning :)
Detta ligger i min UC
if(((_default)this.Page).isHidden()==true) ((DataList)FindControl("PageDescription")).Items[0].FindControl("edit").Visible = false;
Detta ligger i min default.aspx
public bool isHidden()
{
if(User.IsInRole("Developer")) return true;
else return false;
}
antingen är det här för avancerat för mig eller så låter det bara för avancerat.. förstår nog inte riktigt.. ingen aning om vad UC är och inte placeholder heller för den delen... =/
Okay, UC = UserControl och placeholdern använder jag för att ladda UserControlen i på min default.aspx sida. Vore kul med en synpunkt på min lösning av någon kunnig :)