Eftersom du har din label i en annan kontroll (datagrid) så kan du inte rakt av hitta den på sidan. Du får göra en findcontrol på din datagrid och på så sätt hitta din kontroll:
((Label)dgShowRdetails.Items[0].FindControl("id").Visible = true|false;
5 svar · 298 visningar · startad av hopparn
hej
Jag försöker sätta visible true/false på en label som ligger som första raden i en datagrid (template - i itemraderna) men får felmeddelande att den inte existerar ännu , antagligen finns den inte innan griden är utritad, men hur skall jag då göra... Vilken är postningsordningen, för jag antar att det är där jag måste sätta den?
kod som inte funkar:
private void PresentDetailsInGrid(mresearchExtendedDS ds, string mResearchID)
{
DataView dv = ds.View_M_Research.DefaultView;
dv.RowFilter="M_R_ID = "+mResearchID;
dgShowRdetails.DataSource = dv;
dgShowRdetails.DataBind();
if ((bool)Session["Admin"] == true)
{
lblAdmin.Visible=true;
}
else
{
lblAdmin.Visible=false;
}
}
Eftersom du har din label i en annan kontroll (datagrid) så kan du inte rakt av hitta den på sidan. Du får göra en findcontrol på din datagrid och på så sätt hitta din kontroll:
((Label)dgShowRdetails.Items[0].FindControl("id").Visible = true|false;
tusen tack... borde vetat det där, nu funkar det som det skall
har en kort fråga till (verkar stå helt still i dag)
har en sida med en webcontrol (en meny), som visar 3 lable:ar, 1 då du icke är inloggad och 2 då du är inloggad
lablearna sätts baserat på sessioner
jag måste refresha då jag loggat in, för att få se de rätta länkarna, hur kan jag ta mig runt det ( skall jag ladda om ascxfilen och i sf hur?)
bästa h
Hoppis - som är lite trött idag
Om du har en session så finns den ju även i din usercontrol, gör en koll där.
Ett litet tips med tanke på din kod, att skriva:
if ((bool)Session["Admin"] == true)
är samma sak som att skriva:
if (true == true)
Det räcker att skriva:
if ((bool)Session["Admin"])
Men för att göra det ännu lite snyggare kan du byta ut detta:
if ((bool)Session["Admin"] == true)
{
lblAdmin.Visible=true;
}
else
{
lblAdmin.Visible=false;
}
mot en rad kod:
lblAdmin.Visible = (bool)Session["Admin"];
snyggt =)
beträffande userc. så gjorde jag en fuling, jag refreshar sidan en gång efter login, det är inte snyggt, jag vet... men det funkar och applikationen skall vara uppe imorgon =)
lblAdmin.Visible = (bool)Session["Admin"];
Now we talking. :)
Din post borde vara på förstasidan så folk kan se skillnad på bra/dåligt skriven kod.
Koden gör samma sak, men den sistakoden är säkert 4 operationer kortare och alltså betydligt snabbare. Har inte orkat kolla MSIL koden, men det hade varit riktigt intressant och se hur många operationer som man spara på att koda som man skall.
- M