ASP - Behålla checkbox ikryssning efter postback

Permalänk
Medlem

ASP - Behålla checkbox ikryssning efter postback

Hej!
Jag har en sida med två checkboxar. Den ena är ikryssad och den andra inte från början. Om jag ändrar dessa checkboxar (kryssar i ena och kryssar ur andra) och trycker på en länk som gör en postback har checkboxarna nollställts och är tillbaka på vad de är från början.

Hur gör jag för behålla deras "states".

Ska jag på något sätt spara ViewState? Jag har skrivit enableviewstate="true" men det hjälper inte. Gissar att jag måste göra något mer.

Tacksam för svar. Mvh

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem

du får väl i genereringen av sidan mha asp göra dem ibockade om dess postdata är checked.

En ifsats och om den ska vara checked så skriver du ut attributet checked="checked" för elementet.

<input type="checkbox" checked="checked" name=""......./>

Permalänk
Medlem

Om det är "classic asp" får du göra som totoo säger. Är det asp.net så ska väl enableviewstate vara satt till true som default om jag inte minns fel (iaf i net 2) men då får du använda asp taggen för checkboxen

<asp:CheckBox ID="CheckBox1" runat="server" />

Visa signatur
Permalänk
Medlem

Kör du asp.Net?

Kan det vara så att du sätter de initiala värdena i Page_Load??

i så fall får du sätta dessa värden inom en if-sats:

if(!IsPostBack) { // Sätt värden här }

Permalänk
Medlem

Det är .Net jag kör.

xtermin8: Jo, det ska vara satt till true by default. Jag testade att göra en asp:checkbox men fick den inte att behålla värdet ändå. Får nog prova lite mer.
Mickeboy: Jag sätter inte några värden på dessa i codebehind.

Tack för era svar.

edit: En fråga då.
Om jag gör en Response.Redirect("Samma sida som jag är på?querystring=hej") räknas inte detta som en postback?
Kanske därför det inte funkar.

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem

Aha läste inte att det var en länk du körde med först. Testa att smälla in en linkbutton istället för den ska trigga postback och har samma utseende som en länk.

<asp:LinkButton ID="LinkButton1" runat="server" Text="Button" OnClick="Button1_Click" />

Visa signatur
Permalänk

Response.Redirect != postback

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av nilstastic
Response.Redirect != postback

Aha, då är nog detta mitt egentliga problem.

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av glemmy
Aha, då är nog detta mitt egentliga problem.

Precis hann inte med din edit innan mitt sista inlägg.
Response.redirect och länkar triggar inte postback.

Visa signatur
Permalänk
Medlem

ok tack alla. får bli en liten lösning att jag helt enkelt skickar med det i querystringen tills vidare. verkar som att jag får göra om strukturen för mycket för att det ska vara värt att fixa.

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem

Server.Transfer() kan var det du är ute efter.

Visa signatur

Signatur?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av glemmy
ok tack alla. får bli en liten lösning att jag helt enkelt skickar med det i querystringen tills vidare. verkar som att jag får göra om strukturen för mycket för att det ska vara värt att fixa.

Att använda sig av querystrings för sådant är inte direkt att utnyttja .net.

Som någon skrev ovan så borde du använda dig av en linkbutton och sätta ett onclick-event som du sedan hanterat i codebehind

.aspx

<asp:linkbutton onclick="btn_Click" runat="server">min länk</linkbutton>

.aspc.cs

protected void btn_Click(object sender, EventArgs e) { //Det du vill göra när någon tryckt på knappen }

vill du skicka med ett värde till knappen så kan du enkelt göra det genom

<asp:linkbutton commandargument="hej"...

i code behind kommer du åt det

protected void btn_Click(object sender, EventArgs e) { LinkButton lb = sender as LinkButton; string s = lb.CommandArgument; }

Permalänk
Medlem

Nej det är ingen bra lösning med querystrings.
Kan försöka förklara mitt problem lite bättre.

Jag har en textbox och en sökknapp.
Man skriver i textboxen och trycker på sökknappen.
Då görs en Response.Redirect till samma sida + textboxens värde i querystringen. Det fungerar, men eftersom det inte är en postback kommer sidan inte ihåg hur dessa checkboxar var inställda.

Nu skulle jag vilja att den gör en postback istället. Men jag vet inte riktigt hur jag ska lösa detta. PostBackUrl ska sättas till samma sida plus sökordet som querystring. (PostBackUrl = "Default.aspx?ord=" + Me.txtSearch)
Men nu måste jag trycka på knappen två gånger för att det ska funka.
Första gången gör den en postback, men då har den inte uppdaterat sin postbackurl när den laddar sidan. Trycker man igen har den uppdaterat postbackurl och då blir allting rätt, men man vill ju inte trycka två gånger

Som det är nu sätter jag PostBackUrl på btnSearch_Click, men testade även på _Init och _Load och _PreRender med samma resultat.

Hur ska jag kunna ändra PostBackUrl innan postback sker?

Tacksam för svar.

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem

Men vad är grejjen med att göra en response.redirect? Det är ju helt onödigt när du kan/bör hantera allt vid click-eventet.

Har du en asp:textbox så kommer du åt den också i clickeventet, eller är det något som jag missar?

<asp:textbox id="TxtSearch" runat="server">

kommer du åt med

TxtSearch.Text i codebehind.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av manpower
Men vad är grejjen med att göra en response.redirect? Det är ju helt onödigt när du kan/bör hantera allt vid click-eventet.

Har du en asp:textbox så kommer du åt den också i clickeventet, eller är det något som jag missar?

<asp:textbox id="TxtSearch" runat="server">

kommer du åt med

TxtSearch.Text i codebehind.

Jag vill inte göra Response.Redirect som jag skrev. Vill hantera med click-event.

Problemet för mig är att jag inte lyckas sätta postbackurl till rätt url innan postback sker.
När jag i mitt klickevent byter postbackurl har postback redan skett och den har inte gått till rätt url. Det är först nästa gång man trycker det blir rätt, alltså måste man trycka två gånger för att det ska bli rätt url.

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av glemmy
Nej det är ingen bra lösning med querystrings.
Kan försöka förklara mitt problem lite bättre.

Jag har en textbox och en sökknapp.
Man skriver i textboxen och trycker på sökknappen.
Då görs en Response.Redirect till samma sida + textboxens värde i querystringen. Det fungerar, men eftersom det inte är en postback kommer sidan inte ihåg hur dessa checkboxar var inställda.

Nu skulle jag vilja att den gör en postback istället. Men jag vet inte riktigt hur jag ska lösa detta. PostBackUrl ska sättas till samma sida plus sökordet som querystring. (PostBackUrl = "Default.aspx?ord=" + Me.txtSearch)
Men nu måste jag trycka på knappen två gånger för att det ska funka.
Första gången gör den en postback, men då har den inte uppdaterat sin postbackurl när den laddar sidan. Trycker man igen har den uppdaterat postbackurl och då blir allting rätt, men man vill ju inte trycka två gånger

Som det är nu sätter jag PostBackUrl på btnSearch_Click, men testade även på _Init och _Load och _PreRender med samma resultat.

Hur ska jag kunna ändra PostBackUrl innan postback sker?

Tacksam för svar.

Problemet är nog att du "försöker för mycket". Om du vill hantera händelsen och hamna på samma sida igen behöver du inte bry dig om att sätta någon PostBackUrl. Den är nämligen som standard satt till samma sida som du just nu är på.

Och istället för att hämta värdena via querystringen som du har gjort (gammal vana från asp kanske) så skall du precis som manpower skriver hämta värdet direkt från textboxen.

Permalänk
Medlem

Ah
Jag försökte verkligen "för mycket". Grejen var den att jag tog över detta efter en annan kille som gjort på så sätt att han skickar söksträngen i querystringen. Men det var helt onödigt kom jag på (eller kom ni på)
Nu när jag trycker på sökknappen hämtar jag söksträngen direkt från textboxen, en postback görs, och sidan fylls med det som stod i sökfältet.

Bäst av allt, värdet i checkboxen är kvar

Tack ska ni ha alla!

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?

Permalänk
Medlem

.NET är enklare än du tror

Permalänk
Medlem

Hade precis samma problem när jag gick från asp till asp.net man blir helt frustrerad för att man tänker asp och saker och ting inte fungerar som man tror. Men efter den första perioden av "fan inget fungerar som jag tror" kommer perioden "fan vad bra att det inte fungerar som förr för det här är så jäkla mycket smartare"-perioden.

Ett tips är ju att tänka på att försöka hålla all kod borta från .aspx filen och enbart lägga sånt i .cs eller .vb då tvingar man sig själv att hitta rätt alternativ. Jag kollade även ganska mycket på andras kod för att komma in i hur upplägget ska se ut.

Kan ibland starta Visual Studio och småmysandes tänka på hur bra det är och därefter stänga ner det på direkten. Undra om jag är lite vrickad??

Visa signatur
Permalänk
Medlem

<3

Visa signatur

Solen i africa! Hjälp snabbt. Tävling i klassen!
Det var High noon.
Om solen i Africa en truckförare kommer från East till Weast på huvudvägen. och exact vid eqvatorn vid Africa. Landskapet är totalt slät. På en tidpunkt var solen så ett par telestolpar gjorde så att det blev skugga.
3 gissar jag på, men kan inte förklara?