Hej! Maria, Maria: "ett anrop till metoden <b>Response.Redirect()</b> för att skicka vidare användaren" Hej igen! Maria, Tack för hjälpen! Insåg efter att ha testat lite till att det inte alls är så att jag ligger en knapptryckning efter utan helt enkelt så att om jag ändrar texten och därefter trycker på knappen så körs textChanged-hanteraren men inte buttonClick-hanteraren (och heller inte javascripitet som hör till OnClick). Det verkar alltså som om knapptryckningen inte alls registreras. Problemet är väl att du vill validera på serversidan men vill köra klientscriptet samtidigt ... vilket ju inte går. Kan du validera på klientsidan i stället? Eller skapa ett javascript som laddar sidorna som du vill ha dem dynamiskt. Alltså lägg ett onload javascriptscript som skapats efter de förutsättningar du vill ska köras som ersätter det script som du ville köra på knappens onclick. Hmmm .. fan vad jag roddar... Hoppas du förstår lite vad jag menar. Det skall gå att injecta klientscript dynamiskt som de redan förklarat ovan. Exempelvis snabbhackat förslag: I din BODY tagg kan du lägga Härligt! Nu funkar det precis som jag vill! Knapp som också fungerar som länk
Jag har precis börjat programmera ASP.Net och har väldigt lite erfarenhet av att programmera webbsidor över huvud taget, så nu har jag en (förhoppningsvis) enkel fråga.
Jag vill ha en knapp som också fungerar som en länk. Alltså, i min code behind-fil vill jag kunna fånga upp en knapptryckning, validera vissa fält och om dessa uppfyller vissa krav skall en ny sida visas i en annan frame.
Finns det någon ASP-kontroll man kan använda för detta? Jag har tittat på asp:button och asp:hyperlink, men jag får dem bara att göra en av sakerna. En button ger upphov till ett klick-event som jag kan fånga upp i min code behind-fil och validera mina fält, men jag vet inte hur jag gör för att därefter ladda in en ny sida i min frame. En hyperlänk ger inte upphov till något click-event utan laddar bara in den nya sidan.
Någon som kan hjälpa mig med detta?
Mvh MariaSv: Knapp som också fungerar som länk
Använd en vanlig </b>ASP:Button</b> kontroll för din knapp.. den skickar tillbaka knapptryckningen till din code-behind där kan du validera dina fält och sen använda dig av ett anrop till metoden <b>Response.Redirect()</b> för att skicka vidare användaren.. Om du behöver bibehålla form/querystring (ect) data mellan sidorna så använda <b>Server.Transfer</b> istället.
Hoppas det löser sig!Sv: Knapp som också fungerar som länk
Du kan använda dig av en LinkButton, den blir som en länk men fungerar som the Button (den har en Click event). Du kan använda den istället för en button, och tex följa Andreas exempel.
/Fredrik Normén NSQUARED2
http://normen.mine.nu/myblogSv: Knapp som också fungerar som länk
Som jag förstod det av trådstartaren så fungerar det inte iom att det inte är den sidan man är på som man vill ladda utan en annan frame i ett frameset. Typ, knapptryckning i menyn skall ladda sida i "content"-frame.Sv: Knapp som också fungerar som länk
Tack för era svar!
Precis som Gus skrev ovan så har jag ett frameset och där jag efter knapptryckningen vill ladda en ny sida i en annan frame, alltså inte den frame som min knapp befinner sig i. Jag försökte klura ut om detta gick att göra med Response.redirect men lyckades inte. Någon som har fler tips?
/MariaSv: Knapp som också fungerar som länk
Ber om ursäkt.. missade att det skulle laddas i en annan frame. Du kan fortfarande använda en vanlig <b>Button</b> om du skulle vilja det, eller gå på fredriks spår med en <b>LinkButton</b>. Vad man kan göra med en button är att registrera <b>PreRender</b> händelsen och lägga till
[C#]
Button1.Attributes.Add("OnClick", "parent.myFrame.location = 'andrasidan';");
Då registreras ett javascript på din knapp som körs när man trycker på den + att en postback sker. Samma sak kan man göra med en linkbutton.
Sv: Knapp som också fungerar som länk
Men jag får inte riktigt till det i alla fall (hur svårt kan det vara ;-). Jag gör ett försök att förklara lite noggrannare vari problemet ligger.
Jag vill som sagt validera innehållet i vissa kontroller (bland annat en textbox) på sidan i min första frame som jag kan kalla för topFrame. Beroende på innehållet vill jag visa olika sidor i den andra framen som jag kan kalla för bottomFrame. Därför kan jag inte lägga till ditt java-script ovan i knappens PreRender eventhandler, för då visas ju alltid samma sida. Jag vill ha olika sidor beroende på vad användaren fyllt i...
Det sista som händer innan användaren trycker på knappen är att en siffra fylls i textboxen. Jag provade att använda en funktion som triggas av textbox.textChanged som validerar innehållet i textboxen och beroende på vad det är sätter olika sidor med hjälp av ditt javascript.
Typ så här:
[VB.net]
Private Sub textbox.textChanged(........) Handles textbox.TextChanged
if textbox.txt = <giltigt värde> then
Button1.Attributes.Add("OnClick", "parent.bottomFrame.location = 'bottomPageOK.aspx';")
else
Button1.Attributes.Add("OnClick", "parent.bottomFrame.location = 'bottomPageNotOK.aspx';")
end if
End Sub
Problemet är att när jag skriver in texten och sedan klickar på knappen så blir knapptryckningen "en tryckning efter". Jag trycker en gång, då valideras texten och javascriptet läggs in på knappen, men det är inte förrän jag trycker nästa gång som sidan visas i bottomFrame. Om ni förstår hur jag menar...
Fler idéer?
/MariaSv: Knapp som också fungerar som länk
Vet inte om någon blev klokare av detta...
/MariaSv: Knapp som också fungerar som länk
<code>
<script language="javascript">
if(validerad) {
ladda frames 1 .....
} else {
ladda frames 2 ...
}
</script>
</code>
Och denna kodsnutt ska alltså du putta in på din sida då du kör din textChanged kontroll. Validerad byter du förstås till true eller false samt ladd .. till ditt parent.frame......
hoppas det sår några frön
mvh
Jocke
PS if satsen är ju kanske overkill eftersom du redan vet vad som är rätt när du kör testet. så det är bara att ladda onload kod för parent.frame... vad du vill DSSv: Knapp som också fungerar som länk
<code>
<BODY <%=strOnLoad%>>
</code>
I din code-behind lägger du sedan
<code>
Dim strOnLoad As String = ""
</code>
I din knapp event gör du din validering och sätter sedan
<code>
strOnLoad = "parent.bottomFrame.location = 'bottomPageOK.aspx';"
</code>
eller NotOk om validering inte funkar.
På det sättat kommer en PostBack att göras, du gör din validering och när sidan är laddad så körs OnLoad scriptet.Sv: Knapp som också fungerar som länk
Tack alla för hjälpen!
Ifall någon behöver göra samma sak kan jag bifoga den korrekta syntaxen för body-taggen:
<BODY onload="<%=strOnLoad%>">
/Maria