postback issue

Tags:    c# asp.net

Hej alle.
Jeg har arbejdet på et projekt i ASP.NET C#, hvor jeg opretter nogle tabeller for at vise forskellige informationer i dem. Dog har jeg det problem at der sker double postings når jeg trykker F5 eller refresh. Og jeg kan ikke se hvordan jeg kommer forbi det problem.

Fold kodeboks ind/udCSharp kode 


Når jeg trykker refresh eller f5 så køre (så vidt jeg kan se) denne sektion igen
Fold kodeboks ind/udCSharp kode 


Jeg syntes at have prøvet alt (tjo så var det jo løst) og er løbet tør for ider.

Jeg har leget med if (!IsPostBack){} og redirect til den samme side. Dog har jeg set at man med en indikator på sessionen kan løse dette problem. Men det kan jeg ikke rigtig få hovet omkring, hvis nogle har nogle gode råd så er jeg "all ears"

Takker på forhånd.
Mvh.



7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej Christian, det bør ikke være den nævnte kode, der er problemet (navnet indikerer i hvert fald at det kun bliver afhandlet ved klik). Din pageload gætter jeg dog på er problemet, og det er her du mangler en ispostback check.

Har du prøvet at køre en debug, så bør du jo kunne se, hvad problemet er. Du har helt ret i at du bør kigge på IsPostBack, jeg er dog usikker på, hvad du mener med at du redirecter til den samme side ?

Har du overvejet om det ikke ville være nemmere for dig at benytte et gridview frem for alt det tabel kode ?



Indlæg senest redigeret d. 29.08.2011 20:12 af Bruger #10576
Det handler om, at du skal checke for Page.IsPostBack i din PageLoad event. Hvis det ikke er postback, dvs. !Page.IsPostBack, skal du køre din kode, som opretter dit kontroltræ, tabeller og indsamler den viste information osv.



Er det ikke din wwwa() metode, den bliver kaldt i din page_load også, og også i din event handler. Så det du tror er den der bliver kørt, er faktisk bare din page load?



Så jeg prøvede følgende.
#1 ligge det der førhend lå i page_load i en metode for sig selv.
#2 ligge det der førhend lå under knappen i en metode for sig selv.

Hvor jeg så siger
Fold kodeboks ind/udCSharp kode 

Godt nok bliver det hele oprettet korrekt første gang siden loades. Men jeg får stadig double postings ved en refresh???

Metode #1
Fold kodeboks ind/udCSharp kode 

Metode #2
Fold kodeboks ind/udCSharp kode 


Er det noget i den still som du mente Jonas?

Hej Brian. Jeg er ikke sikker på jeg ved hvad du mener. Min wwwa() metode bliver kun kaldt i knappen. Det som der ligger i page_load i min første post er en tabel for sig selv. Som wwwa() er en tabel for sig selv.

EDIT.
Dette er nok langt fra den optimale måde at gøre tingene på men jeg fik "løst" mit nuværende problem.

Fold kodeboks ind/udCSharp kode 

Det her er nok ikke noget min lære til skole projekter ville nyde at se. Er der et sted hvor man kan lære på en overskuegelig måde hvordan "page life cycle" fungere i asp.net? evt. en dansk bog der uddyber emnet.

EDIT2
Nu har jeg lidt et andet issue (har nok rod i det samme). Efter jeg har trykker på en knap og trykker refresh, så bliver knappen aktiveret igen. Hvordan gør man så
#1 der bliver trykker på en knap.
#2 dette bliver cleret så en refresh ikke aktivere den samme knap igen.

EDIT3
Fik det løst med en
Fold kodeboks ind/udCSharp kode 




Indlæg senest redigeret d. 30.08.2011 11:23 af Bruger #16700
Prøv denne side: Page Life Cycle

Der står da i hvert fald lidt om hvordan det hænger sammen :-)



Har prøvet at læse om det. Fandt linket sammen med to andre på et tidspunkt. Men jeg finder det lidt...uoverskueligt. Havde håbet nogle kunne forklare det på en måde som var til at forstå.



Indlæg senest redigeret d. 06.09.2011 14:06 af Bruger #16700
Er 'bare' rækkefølgen din kode bliver eksekveret i. Men hvis du så gør tingene et forkert sted, kan data jo så senere bliver overskrevet fx. Det er essentielt at forstå, før du kan arbejde med asp.net

Kunne lige se der ligger en artikel i forvejen her på udvikleren:
http://www.udvikleren.dk/artikler/332/et-kig-paa-asp.nets-page-klasse/side4/ der er godt nok remset for mange op, hvis du spørger mig, men tag da at læs den side (og de foregående), så håber jeg du kommer godt på vej.



t