webForumDet fria alternativet

UC laddas inte om

.NET

5 svar · 265 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#1

Jag har en aspx sida (default.aspx)

Denna laddar i sin tur in två stycken UC och lägger dessa i två panels.

CustomerDB.UserControls.systemMenu ucSystem = (CustomerDB.UserControls.systemMenu)Page.LoadControl("/customerDB/userControls/systemMenu.ascx");
ucSystem.BindPCProGrid(Convert.ToInt32(OfficeId));
pnlSystem.Controls.Add(ucSystem);

CustomerDB.UserControls.comments ucComments = (CustomerDB.UserControls.comments)Page.LoadControl("/customerDB/userControls/comments.ascx");
ucComments.BindCommentsGrid(Convert.ToInt32(OfficeId));
pnlComments.Controls.Add(ucComments);

I min ucComments så har jag en knapp som skall lägga till en kommentar, men när jag klickar på den så laddas sidan om och mina två paneler försvinner. Detta även fast jag kör

((StartPage)Page).getOffice("2".ToString().Trim());

i min ucComments
(getOffice är den som binder upp mina UC och som innehåller koden högst upp i defautl.aspx).

Någon som vet vad jag gör för fel och varför datat försvinner när jag klickar på min asp:button

Medlem sedan apr. 20012 266 inlägg
#2

När lägs controlerna in i sidan?

Medlem sedan juli 2001514 inlägg
#3

Följande klass finns i default.aspx.cs.

public void getOffice(string OfficeId)
	{
		CustomerDB.UserControls.systemMenu ucSystem = (CustomerDB.UserControls.systemMenu)Page.LoadControl("/customerDB/userControls/systemMenu.ascx");
		ucSystem.BindPCProGrid(Convert.ToInt32(OfficeId));
		pnlSystem.Controls.Add(ucSystem);

		CustomerDB.UserControls.comments ucComments = (CustomerDB.UserControls.comments)Page.LoadControl("/customerDB/userControls/comments.ascx");
		ucComments.BindCommentsGrid(Convert.ToInt32(OfficeId));
		pnlComments.Controls.Add(ucComments);

	}

Då den kallas via menyn så fungerar allt ok

((StartPage)Page).getOffice(DataGridCustomer.DataKeys[e.Item.ItemIndex].ToString().Trim());

Men så har jag en buttom som renderar i en postback i usercontrollen Comments.ascx
Även om jag försöker att ladda om userkontrollerna från default.aspx.cs i att lägga anropet till klassen i Page_Load så fungerar det inte, dvs inget visas.

getOffice("2".ToString().Trim());
Medlem sedan apr. 20012 266 inlägg
#4

Har du kollat att koden verkligen körs?

Medlem sedan juli 2001514 inlägg
#5

Problemet är väl egentligen att efter jag kallat på getOffice från default.aspx så laddas sidan om, i och med att det skapas en post_back av button controllen.

Så vad jag egentligen skulle behöva för att komma runt detta är en knapp som inte genererar post_backs (Vilket inte är så bra då man gärna vill att sidan skall laddas om efter att man lagt till information för att användaren skall se vad han/hon gjort), eller att man på något sätt försöker skicka med OfficeID och gör något sorts call i en Page_load.

Någon som vet hur jag skall få med mig värdet på OfficeID från en UC som ligger i default.aspx till Page_Loaden på defautl.aspx.cs ??

Medlem sedan juli 2001514 inlägg
#6

Någon som har någon ide hur jag kan komma runt problemet ovan?

Jag har försökt med en fuling som innebär att jag sätter en sessionsvariabel innan jag kallar på getOffice()

I GetOffice så har jag bara satt upp nya anrop till exempelvis contaktmenyn enl

contactMenu menu = new contactMenu();

I UC'n contactMenu så läses sessionsvariablen in och används för att hämta data från db.

problemet är bara att jag är tvungen att klicka på knappen för inläsninge av getOffiec två gånger för att kodsnutten ovan skall köras?!!?

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