webForumDet fria alternativet

Komma åt label i en UC

.NET

12 svar · 359 visningar · startad av maqe

Medlem sedan dec. 2003824 inlägg
Frågan#1

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?

Medlem sedan apr. 2004778 inlägg
#2

Skapa Get/Set properties för Labeln i din UC, precis som man gör i en klass.

Medlem sedan dec. 2003824 inlägg
#3

Aha okay ... tackar ...

Medlem sedan apr. 2004778 inlägg
#4

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.

Medlem sedan dec. 2003824 inlägg
#5

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

Medlem sedan apr. 2004778 inlägg
#6

Funkar det inte att köra

 public label myPrice
{
get
{
return Price;
}
set
{
Price = value;
}
}
Medlem sedan dec. 2003824 inlägg
#7

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.

Medlem sedan apr. 2004778 inlägg
#8

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

Medlem sedan dec. 2003824 inlägg
#9

Jag tror problemet är att labeln ligger i en datalist? Någon som vet vad man ska ha för approach till detta problem?

Medlem sedan jan. 2004678 inlägg
#10

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.

Medlem sedan dec. 2003824 inlägg
#11

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;
}

Medlem sedan jan. 2004678 inlägg
#12

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... =/

Medlem sedan dec. 2003824 inlägg
#13

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 :)

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)