Laden...

Wie bekomme ich das Ja/Nein aus Javascript in C#?

Erstellt von morcheba vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.830 Views
M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren
Wie bekomme ich das Ja/Nein aus Javascript in C#?

Wenn ich mit Javascript eine Messagebox öffne habe ich ja einen Rückgabewert. Nun, wie kann ich diesen mit C# ansprechen? Ich muss ja jenachdem, was der User ausgewählt hat, eine andere aktion ausführen...

N
4.644 Beiträge seit 2004
vor 18 Jahren

Stichwort: DialogResult

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

Danke für den Hinweis! Habe hier im Forum mal gesucht und habe etwas gefunden. Aber nun habe ich ein Problem. Ich kann ja nicht eine MessageBox öffnen wie in einem Windows Form. ich arbeite mit webforms.

Hier wird meine messagebox aufgerufen:


btnDelete.Attributes.Add("onClick", "return confirm('Soll das Problem wirklich gelöscht werden?');");

Und lauft Forum sollte folgendes möglich sein:


			if (MessageBox.Show("Frage - Text", "Überschrift", MessageBoxButtons.YesNo) == DialogResult.Yes)
			{
				// Tue etwas nach Deinen belieben
			} 


Aber Messagebox.Show wird bei mir nicht gefunden. Was muss ich hier nehmen?

X
2.051 Beiträge seit 2004
vor 18 Jahren

Beim nächsten Mal bitte gleich im richtigen Forum posten.
Danke

N
4.644 Beiträge seit 2004
vor 18 Jahren

Sorry ich dachte Du suchst nach Windows Forms. Scheint ja nicht so zu sein, also vergiß meine Antwort. Um solchen Mißverständnissen vorzubeugen, solltest Du im richtigen Forum posten.

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

Und für WebForms gibt es keine Lösung?

S
143 Beiträge seit 2006
vor 18 Jahren

Du musst Dein Formular submitten und z.B. das Ergebniss der Messagebox in der URL mitgeben.

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

da komm ich nicht mit..

Es geht darum, dass wenn ich auf den button löschen klicke eine Messagebox geöffnet wird und den user fragt, ob er den eintrag wirklich löschen will...


btnDelete.Attributes.Add("onClick", "return confirm('Soll das Problem wirklich gelöscht werden?');");

Und nun möchte ich wissen, ob der user auf ja geklickt hat -> problem löschen
oder ob er nicht löschen möchte

N
4.644 Beiträge seit 2004
vor 18 Jahren

Du kannst es auch per ClientCallback an den Server schicken.

1.696 Beiträge seit 2006
vor 18 Jahren

Original von morcheba
da komm ich nicht mit..

Es geht darum, dass wenn ich auf den button löschen klicke eine Messagebox geöffnet wird und den user fragt, ob er den eintrag wirklich löschen will...

  
btnDelete.Attributes.Add("onClick", "return confirm('Soll das Problem wirklich gelöscht werden?');");  
  

Und nun möchte ich wissen, ob der user auf ja geklickt hat -> problem löschen
oder ob er nicht löschen möchte

wenn du den Button als submit-Button definiert hast, dann:

  • wenn User ja sagt/clickt, steht in onclick: return true und das Formular wird gesendet. Du brauchst nur noch den Wert des Buttons zu prüfen, dann weisst du, dass das Formular auf Aktion dieses Buttons gesendet wurde

  • wenn der User nein sagt/clickt, steht in onclick: return false und nichts passiert weiter. Dann brauchst du dich auch um nichts zu kümmern.

Ich hoffe, dass ich nicht zu verwirrt formuliert habe 😁

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

1.130 Beiträge seit 2005
vor 18 Jahren

Original von morcheba
Wenn ich mit Javascript eine Messagebox öffne habe ich ja einen Rückgabewert. Nun, wie kann ich diesen mit C# ansprechen? Ich muss ja jenachdem, was der User ausgewählt hat, eine andere aktion ausführen...

Mach Dir mal den Unterscheid zwischen clientsetigen und serverseitigen Code klar. Dann kannst Du Dir die Lösung bzw. Vorgehensweise selbst erklären.

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

@vbprogger:
ich bin einigermassen nachgekommen. theoretisch verstehe ich es. aber praktisch anwenden kann ich es nicht.

So habe ich mein Button erstellt:


<asp:Button id="btnDelete" runat="server" CssClass="button" Width="157px" Text="Problem löschen"></asp:Button></TD>

Und nun?

1.696 Beiträge seit 2006
vor 18 Jahren

dann im Codebehind, z.B. in Page_Load folgende Zeile eingeben:


    protected void Page_Load(object sender, EventArgs e)
    {
			this.Button.Attributes.Add("onclick", "return confirm('ok');");
			if (IsPostBack)
				Response.Write("OK confirmed<br />");
			else
				Response.Write("newload<br />");
    }


dann kannst du testen:

  • beim Neuladen muss die Zeile newload erscheinen
  • beim Klicken auf dem Button, kommt erstmal die Abfrage
    --> betätigst du Abbrechen, ändert sich nichts auf dem Bilschirm, die Seite wird nicht gesendet
    --> betätigst du dagegen OK, wird die Seite neugeladen und der Text "OK confirmed" erscheint.

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

Habe folgendes versucht:


btnDelete.Attributes.Add("onClick", "return confirm('Soll das Problem wirklich gelöscht werden?');");
			
			if (IsPostBack)
			{
				lblError.Visible=true;
				lblError.Text = "OK confirmed";
			}
			else
			{
				lblError.Visible = true;
				lblError.Text = "newload";
			}

Es funktioniert aber nicht. Ich bekomme zwar die messagebox aber diese reagiert nicht..

1.373 Beiträge seit 2004
vor 18 Jahren

Funktioniert bei mir. Hast du im Browser evtl. JavaScript deaktiviert?

Grüße,
Andre

E
265 Beiträge seit 2004
vor 18 Jahren

Versuchs mal so:


btnDelete.Attributes.Add("onClick",
"javascript:if(confirm('Soll das Problem wirklich gelöscht werden?')== false) return false;");

Falls mich jemand über das "== false ) return false;" aufklären will, Ich weis das der Code in c# das gleich machen würde. Ich hab aber die erfahrung gemacht das javascript nicht c# ist.

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

nein habe ich nicht...denn wenn ich den code von if weg lösche bekomme ich die messagebox...
Kann es daran liegen, dass ich im Page_Load noch etwas anderes mache? Ich mache dort eine Abrage


if((!Page.IsPostBack) && (Session["LoggedIn"] != null))
{
}

1.696 Beiträge seit 2006
vor 18 Jahren

poste doch mal den kompletten Code von Page_Load, bevor wir anfangen rumzuraten 😁

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

Ein kleiner Hinweis. Ich mache zuerst noch andere Dinge und erst wenn jemand auf den Button Delete klickt soll die Messagebox kommen...


private void Page_Load(object sender, System.EventArgs e)
			{
				btnDelete.Attributes.Add("onClick", "return confirm('OK?');");
			
				if (IsPostBack)
				{
					lblError.Visible=true;
					lblError.Text = "OK confirmed";
				}
				else
				{
					lblError.Visible = true;
					lblError.Text = "newload";
				}


				Berechtigung();

				#region Typ füllen
				if((!Page.IsPostBack) && (Session["LoggedIn"] != null))
				{
					try
					{
						//Klasse aufrufen um das DropDownMenü Problemtyp zu füllen
						FAQ.GetData getData = new FAQ.GetData();
						ddltyp.DataSource = getData.Gettyp();
						ddltyp.DataTextField = "typ";
						ddltyp.DataValueField = "id";
						ddltyp.DataBind();

						//Leeren Eintrag hinzufügen, damit keine Fehleinträge gemacht werden
						ddltyp.Items.Insert(0,new ListItem("","0"));
					}

					catch(Exception ex)
					{
						//Falls ein Fehler auftritt, Error anzeigen
						lblError.Visible = true;
						lblError.Text = ex.Message;
					}	
				}
				#endregion

1.696 Beiträge seit 2006
vor 18 Jahren

hm ... sieht normal aus, bekommst du irgendwelche Fehlermeldung?

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

M
morcheba Themenstarter:in
353 Beiträge seit 2005
vor 18 Jahren

nein. ich komme jedoch immer in das isPostBack rein. Egal was ich anklicke, auch wenn ich nichts anklicke. Denn das IsPostBack hängt ja nicht nur von der MessageBox ab. Es kann ja auch beim normalen IsPostBack, dass dort durchgegangen wird...

1.696 Beiträge seit 2006
vor 18 Jahren

ah ... jetzt ist mir klar, was du haben willst. OK wenn du die Seite sendest, ist IsPostback immer true. Buttons, CheckBox und RadioButton haben die Eigenschaft, dass der Wert nur gesendet wird, wenn darauf geklickt bzw. aktiviert ist. Also musst du zusätzlich prüfen, ob der Button geklick wurde und zwar hiermit:

 

if (IsPostback && Request.Form.Get("ButtonName")!=null)
{
   // Button wurde geclickt
}
else
{
  // Seite wurde zum 1. Mal geladen
}


Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::