om jag använder mig utav
Pagelet (ascx)
Kan jag komma åt databaskopplingen i codebehind filen?
slipper jag öppna den flera gånger
Eller tvärtom kan jag komma åt databaskopplingen på den vanliga sidan om den ligger i ascx filen.
5 svar · 177 visningar · startad av Nickemannen
om jag använder mig utav
Pagelet (ascx)
Kan jag komma åt databaskopplingen i codebehind filen?
slipper jag öppna den flera gånger
Eller tvärtom kan jag komma åt databaskopplingen på den vanliga sidan om den ligger i ascx filen.
Jag tycker själv inte det gör någe att man behöver öppna den och stänga den flera ggr (vilket görs automatiskt när man använder .Fill).
Men om man har ett jätte stort dataset så kan man ju spara undan detta i pagleten och sen hämta det ifrån huvudsidan.
Gör en,
public DataSet DataSet{
get{
return ds;
}
}
och du kan nu komm åt datasetet ds från huvudsidan genom att kalla på propertyn DataSet i pagleten.
DataSet ds = myPagelet.DataSet;
Eller för att göra tvärtom
I pagleten
((myPage)Page.Parent).ds;
Där ds måste vara en public variabel och där myPage är namnet på klassen.
Ber om ursäkt om det är lite kod fel..skriver bara rakt upp oc ner.
Hoppas det hjälper
...och du vet väl att även en ascx-fil också kan ha en codebehind-fil som kan hantera kod precis på samma sätt som din aspx-sida. Jag tycker det är smidigast att hämta de data som min pagelet använder i koden för pagleten, i normala fall behöver man inte köra så mycket kommunikation mellan aspx och ascx. Genom att göra dina paglets helt självständiga kan du ju dessutom mycket lättare klistra in dem på vilken sida som helst i ditt projekt!
Är det inte prestanda krävande att öppna och stänga en databas koppling connection ofta då?
Det jag menar är att, Jag har en mall där databasen behövs öppnas för att hämta information om användaren där det skall vara lite design och användarens inställningar.
Detta ligger i 2 ascx filer en som skrivs ut i början och en som skrivs ut i slutet av sidan.
Sedan har jag main sidan, den information som ligger i mitten av
dessa 2 sidor, denna sida måste också komma åt databasen.
Vad jag kan se så måste jag öppna databas kopplingen 3 gånger för en sida?
Eller kan jag öppna databas kopplingen och använda en ända på alla 3 sidor samtidigt?
Alltså öppnar den i den första mall filen?
Om du gör som Grynet skrev så plockar du ju data från ditt dataset och detta datasetet fyller du en gång. Då gör du bara en koppling mot databasen, resterande mot ditt dataset vilket naturligtvis är lite bättre ur prestandasynpunkt.
Om du inte har en mastodontapplikation med väldigt många samtida hämtningar så tror jag dock knappast att du behöver oroa dig för prestandan om du gör ett par enskilda kopplingar mot din databas. Vi pratar ju inte sekunder här... En av finessen med pagelets tycker jag är att de i sitt "grundutförande" så långt som möjligt ska vara oberoende både av varandra och den sida på vilken de inkluderas.
Ett alternativ är ju att göra en egen klass som du använder när du kopplar upp dig mot databasen. Du tjänar inte prestanda men däremot kod och struktur...