15. oktober 2009 - 11:06Der er
10 kommentarer og 1 løsning
c#.net messageBox til web
Jeg har et problem, for jeg kan godt få messageBox til at køre lokalt, men så snart jeg lægger i test, får jeg en fejl.
Er der en måde hvorpå jeg kan bruge messageBox og tjekke om der bliver svaret ok eller cancel på en web-form?
Det jeg har nu som fejler:
protected void dg_select_SelectedIndexChanged(object sender, EventArgs e) { string message = "Noget tekst"; //show messagebox - if ok has been choosen if(System.Windows.Forms.MessageBox.Show(message, "Du har valgt", System.Windows.Forms.MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK) {
Jeg får følgende fejl i test: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application
nu ved jeg selvfølgelig ikke hvad du arbejder på - men umiddelbart ville jeg holde mig til web-teknologier når du laver web, dvs du skal benyttes javascript for at lave sådan en box, alternativt kigge på ajax.
Umiddelbart har jeg ikke kunne finde et javascript der gav muligheden for at vælge ok eller cancel (kun alert) og så har jeg ikke kunne finde ud af hvordan man skal tjekke at ok er klikket af her, før resten af koden eksekveres.
Nogen der har et eksempel på en javascript pop-up eller ligende, hvor man kan vælge ok eller cancel og hvordan man så fanger hvad der er valgt? Pop-up skal affyres når selectedIndexChanged er true, dvs. en ColumnButton er blevet valgt.
Tilsvarende skal resultatet så også fanges med js - fx
if (confirm('din besked') == true) { alert('du klikkede ja'); }
Igen - uden at kende dit setup - virker det som overkill at benytte et kald til serveren for at udføre en egentlig klient-handling. Jeg vil benytte js; onchange="dinjsfunktion();".
keysersoze: tror du har misforstået, det jeg efterlyste var blot en funktion der mindede om messageBox (hvis en winform messageBox ikke kunne bruges i web sammenhænge, hvilken den jo umiddelbart ikke kan).
Så hvis det er javascript der skal til, fint med mig. Men som sagt har jeg kun kunne finde js Alert, og det er jo ikke det jeg vil. Jeg vil have en pop-up med en ok og en cancel knap, og hvis brugeren siger ok, så skal der eksekveres en slags kode, men siger brugeren cancel, skal der eksekveres noget andet kode.
Men er confirm et javascript? og hvor skal det placeres?
Jeg vil blive meget glad for et fuldstændigt kode eksempel af hvor jeg skal tilføje de forskellige js.
Hvis du ikke ved hvad min kode gør er det vel lidt svært at vide om jeg har misforstået eller ej. Jeg ved ikke hvad du vil og derfor er det svært at komme med et færdigt eksempel - men prøv fx;
Det var blot følgende i dit svar: "Igen - uden at kende dit setup - virker det som overkill at benytte et kald til serveren for at udføre en egentlig klient-handling." For jeg vil jo bare have en pop-up med valgmuligheder, så tænkte at du måske misforstod og troede at jeg ville have en messagebox hvilket ikke er tilfældet. Js er helt fint.
Så ang. den kode du har skrevet, så er den sikkert helt fin, fatter bare ikke hvor jeg skal sætte det ind henne i min kode.
Men jeg prøver lige at forklare igen. Jeg vil have, at når brugeren har valgt (i dette tilfælde en mailadresse) i datagridet, så skal der komme en pop-up med meddelelsen Er du sikker på at du vil sende en email til valgte adresse, og så mulighed for at sige ok eller cancel, så lidt seudo:
protected void dg_select_SelectedIndexChanged(object sender, EventArgs e) { pop-up("Du har valgt bla bla blab bla");
//ok er valgt if(pop-up.selected = "ok") { //send email til valgte adresse } else { //vis datagrid igen }
Kan dette ikke lade sig gøre? Jeg kan godt se at js confirm er det jeg skal bruge, men hvordan får jeg det ind i ovenstående?
Hvor skal jeg evt. indsætte dg_select.Attributes.Add("onclick", "alert(confirm('din besked'));"); ?
Okay, har nu fattet at dg_select.Attributes.Add("onclick", "alert(confirm('din besked'));"); skal sættes ind i pageload, men hvordan fanger jeg så henholdsvis ok og cancel senere hen?
Det er ikke nok at skrive if (confirm('din besked') == true) så får jeg en fej:Too many characters in character literal
Tror jeg har grejet den, har i alt fald pt. noget der fungere 90% som jeg gerne vil have.
på .aspx siden: <script language="javascript"> function confirm_delete() { if (confirm("Er du sikker på, at du vil sende en email til den valgte emailadresse?") == true) return true; else return false; } </script>
Hvis ok vælges, så eksvere koden "videre" og går ind i protected void dg_select_SelectedIndexChanged(object sender, EventArgs e)
Hvis cancel vælges, stopper ekseveringen, og det er muligt at vælge en anden email (i dette tilfælde).
Nu, kunne jeg bare godt tænke mig at manipulere lidt med den tekst der bliver vist i Confirm-boxen, for jeg vil gerne vise den email der er blevet valgt, kan dette lade sig gøre?
keysersoze: smider du ikke et svar, for at hjælpe mig på vej?
så kan du lave din funktion så den modtager en parameter - fx;
function confirm_delete(yourvar) { if (confirm('Er du sikker på, at du vil sende en email til ' + yourvar + '?') == true) return true; else return false; }
og så skal du sende værdien med når du kalder funktionen.
hvis du skal have fat i adressen vil jeg umiddelbart mene at du skal finde en event på dit datagrid du kommer ind i for hver post der tilføjes til griddet - på den måde kan du fange postens adresse og lægge ind som fx en hyperlink-kontrols (eller hvad det så en er du har som vælger) attribut.
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.