Avatar billede nat Nybegynder
15. oktober 2009 - 11:06 Der 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
Avatar billede keysersoze Guru
15. oktober 2009 - 11:12 #1
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.
Avatar billede nat Nybegynder
15. oktober 2009 - 11:21 #2
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.
Avatar billede keysersoze Guru
15. oktober 2009 - 11:31 #3
confirm('din besked');

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();".
Avatar billede nat Nybegynder
15. oktober 2009 - 12:43 #4
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.
Avatar billede keysersoze Guru
15. oktober 2009 - 13:02 #5
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;

dg_select.Attributes.Add("onclick", "alert(confirm('din besked'));");
Avatar billede nat Nybegynder
15. oktober 2009 - 13:44 #6
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'));"); ?
Avatar billede nat Nybegynder
15. oktober 2009 - 14:04 #7
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
Avatar billede nat Nybegynder
15. oktober 2009 - 15:31 #8
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>

på. aspx.cs siden:

protected void Page_Load(object sender, EventArgs e)
{
...
...
dg_person.Attributes.Add("onclick", "return confirm_delete();");

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?
Avatar billede keysersoze Guru
15. oktober 2009 - 22:21 #9
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.

Muligheden omkring ajax kan du se her; http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ConfirmButton/ConfirmButton.aspx
Avatar billede nat Nybegynder
16. oktober 2009 - 09:09 #10
keysersoze:  smider du ikke et svar :o)

Det var præcis det jeg ledte efter.

Dog kan jeg ikke lige få den til at fange den email adresse der bliver valgt i datagridet. Men det opretter jeg et nyt spørgsmål på.

Tak for hjælpen.
Avatar billede keysersoze Guru
17. oktober 2009 - 09:35 #11
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester