24. november 2004 - 10:12Der er
10 kommentarer og 1 løsning
Global variabel i ASP.NET med C#
Jeg har lavert en side der genererer en brugerflade ud fra indholdet af en datatable. Ved Page_Load opretter jeg en instans af DataTable. Herefter vælger jeg noget data i databasen, der sørger for at give mig den DataTable jeg skal bruge. Dette sker ved at trykke en knap på brugerfladen. Nu bliver der kaldt en funktion der genererer brugerflade ud fra indholdet af den indlæste DataTable. Brugerfladen er et spørgeskema. So far so good!
Nu sker det problemfyldte.
Jeg skal nu fylde noget i spørgekemaet og gemme dette i min DataTable igen. Når jeg trykker på knappen gem kommer der en fejlmeddelelse der antyder at min DataTable er forsvundet.
Den siger: Object reference not set to an instance of an object.
Alt peger på at det er min DataTable der er forsvundet.
Mit spørgsmål er nu, hvordan bevarer jeg min DataTable, som en global variabel, så jeg kan bruge den i alle mine funktioner på siden? Al databehandlingen foregår i C#.
Jeg har prøvet det du foreslår. MEN...når jeg trykker på knappen gem, og dermed kalder den dertilhørende funktion er (DataTable)Session["datatable"] tom. Jeg prøver at udlæse rækkerne og den har nul rækker. Hvis jeg derimod udskriver (DataTable)Session["datatable"] i den funktion hvor jeg får fyldt min DataTable har den fire rækker. Det virker som om Session["datatable"] forsvinder når jeg ryger ud af hent-funktionens context. Er det fordi session blot holder er en reference til min datatable og jeg derfor skal lave en copy istedet for blot at sætte den lig med??? altså noget ala:
Af uforklarlige årsager er det begyndt at virke....!!!!!! Jeg tilføjede en knap så jeg uanset hvornår jeg var i min web-session kunne udlæse min dataTable og nu virker det!!!!
Så du må jo hellere få nogle point;-) Smider du et svar????
Lige et tillægsspørgsmål!!! Jeg genererer spørgeskemaet på run-time i et Panel. Når jeg vil hente data ud af de genererede textboxe har jeg mistet referencen til dem. Jeg har prøvet at lægge dette panel i Session, men der gemmer den dem uden det indtastede. Kan jeg gøre noget for at kunne få fat i det indtastede??
Dine tekstbokse bliver under alle omstændigheder submitted, og hvis du ikke kan få .NET til at håndtere det automatisk, fordi du genererer dine tekstbokse, kan du altid hente værdierne ud fra din Request.Form collection. Den kan du simpelt hen gennemløbe og få samtlige værdier ud - inklusive dem du egentligt ikke skal bruge.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.