webForumDet fria alternativet

sätta en label i en datagrid

.NET

5 svar · 298 visningar · startad av hopparn

Medlem sedan nov. 20011 551 inlägg
Frågan#1

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;
			}
		}
Medlem sedan juni 20011 732 inlägg
#2

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;
Medlem sedan nov. 20011 551 inlägg
#3

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

Medlem sedan juni 20011 732 inlägg
#4

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"];
Medlem sedan nov. 20011 551 inlägg
#5

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

Medlem sedan maj 20012 812 inlägg
#6

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

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)