28. juli 2003 - 13:34Der er
34 kommentarer og 1 løsning
Læse indhold af datagrid og herefter reload
Hej,
Jeg har en side hvor brugerne kan skrive noget i en tekstbox. Men da siden reloades med mellemrum, for at opdatere informationerne på siden, vil det ikke være særlig hensigtsmæssigt at reloade siden og dermed slette brugerens indtastninger inden disse er gemt. Det er derfor nødvendigt at hente informationer ud af tekstboxen (som findes i et datagrid), og lade dem afgøre om siden må reloades.
Har et datagrid med nogle informationer fra en database. Disse informationer ændres løbende, hvorfor det er nødvendigt at opdatere web siden, for at have et tidssvarende billede af databasen. I mit datagrid skal der ligeledes være en textbox, hvor brugen kan skrive en kommentar til hver enkelt linie i mit datagrid, og gemme denne ved tryk på en knap. Her kommer problemet ind i billedet, hvis siden opdateres mens bruger er ved at skrive, og altså inden teksten er gemt slettes denne. Men hvordan kan jeg vide om der står noget i textboxen ???
ok - uden at kende dit program nærmere så vil jeg mene at du i din preRender metode skal smide indholdet af din(e) textbox ind i sessions, og så i din page_load gøre det modsatte (altså smide sessions til textboxe)
Det med page_load er jeg med på, men hvor kommer preRender fra ??? Jeg kan vel ikke tilgå den i "code-behind", der har jeg vel allerede "tabt" mine data i textboxene ???
Så vidt jeg kan se opstår eventet preRender før siden genereres, og efter page_load. Det jeg har brug for er et event/metode der giver mig mulighed for at gemme data fra mit datagrid.
Som det er nu, kalder jeg en side med et datagrid hver gang jeg ønsker at opdatere. Denne side sørger så for at hente data fra databasen og smide dem i datagridet. Det virker sådan set OK,(benytter smartNavigation=true så det ikke blinker). Hvis det ikke kan gøres sådan, eller der er andre og mere smarte metoder vil jeg meget gerne høre nærmere.....
preRender foregår vel på serveren, er det ikke nødvendigt at lave et eller andet på clienten, for at gemme indholdet af textboxene ??? og i så fald, hvordan kan jeg så få fat i mine textboxe når de ligger inde i et datagrid ???
Det burde vel egentlig være nok at gemme teksten i tekstboksen ved hjælp af OnTextChanged="OnTextChangeMethod" og så sætte den ind igen ved hjælp af page_load ???
Så vidt jeg husker så aktiveres OnTextChanged først når du har skrevet en text og så fjerner focus fra textboxen. Ellers ville der jo ske uendelige mange postbacks hvis du skulle skrive 'hej mormor og morfar nu skal I bare høre blablabla..." forstå min pointe :-)
Faktisk så tror jeg at det er noget rod at gemme et tegn LIGE efter at det er indtastet. Så skal du have en meget speciel grund. Jeg tror mere på teorien om at du skal gemme feltet(textboxs indhold) hvis det har focus lige inden du reloader dit datagrid - ved du hvor jeg vil hen?
Hvordan laver du lige den reload af siden? Kalder den helt forfra, eller laver en postback?
Hvis du laver en postback skulle det da være muligt at hive ud, hvor brugere var i datagriddet, inden din postback blev lavet.
Hvis den ikke laver en postback, må du have lavet noget clientside script der gør det for dig. Du kan evt. også bare lave et clientside script der tjekker om du er ved at skrive noget, hvis man ikke er laver den bare en reload, og ellers spørger den om den må lave en.
En anden ting (uden at kende den konkrete sag i detaljer). Jeg hader sidder der automatisk reloader.
Jo, det må blive sådan noget.....indtil videre benytter jeg bare "Response.Write( "<meta http-equiv=\"Refresh\" content=\"5\">" );" i page_load, men jeg skal have lavet et script der klare opgaven ved et postback.....Nogen ideer til hvordan ??? :-)
hmm jeg ville måske gribe opgaven lidt anderledes an. Dér hvor man kan putte data ind i databasen (eller slette dem) burde være stedet ellerr har jeg misforstået noget...?
når der bare bliver lavet en refresh kan han ikke gemme noget.
Han bliver nødt til at finde tilstanden og så lave en postback.
De data som brugere har skrevet ind skal vel blive ved med at være der, og ikke gemmes i databasen før brugeren aktiv trykker gem.
Jeg er dog bange for at det aldrig vil blive en pæn løsning, hvis vi nu siger at der bliver lavet en postback imens at brugere sidder og skriver vil han miste focus(kan man programmere sig fra) miste lidt af det der er skrevet (kan man ikke programmere sig fra).
Hvis du kan lave et clientside script der tjekker på om man har skrevet noget i en textbox som man har focus i, og så udsætte opdateringen hvis man har. Når brugere så er færdig med at skrive, vil han trykke på gem, og så vil siden jo blive opdateret i den forbindelse.
Hvordan man så sætter sådan et clienside script til at blive udført efter 10 sec, ved jeg ikke.
ahhh okies, så er jeg med igen. Troede du ville have timerskidtet til at ligge der...kunne ikke lige få det til at give mening :-) Nope, det er en mulighed at gemme det der :-)
Vær lige opmærksom på at der er 2 der svare på dit indlæg nu =P
Synes godt om
Ny brugerNybegynder
Din løsning...
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.