Laden...

Problem mit Alert Javascript und C#

Erstellt von King-Malkav vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.289 Views
King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren
Problem mit Alert Javascript und C#

Ich hab folgendes Problem. Meine SQL Abfragen habe ich alle in eine eigene Klasse geschrieben und Public gemacht, damit ich sie von meiner eigentlichen Webanwendung aufrufen kann. Das ganze hat nur ein Problem. Sollte ich eine Exeption bekommen, geht die Exception Nachricht verloren. Um dies zu verhindern habe ich mir eine Hilfsklasse zusammengebastelt. Diese erzeugt ein Javascript alert und soll die Exceptionmeldung ausgeben. Die Klasse an sich funktioniert, nur wenn ich sie über die SQL Klasse aufrufe bekomme ich kein Alert ausgegeben.

Ich kenn mich in Javascript auch nicht wirklich aus, währe nett wenn mir jemand helfen könnte.

Hier mal meine SQL KLasse


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Odbc;

/// <summary>
/// Zusammenfassungsbeschreibung für sql
/// </summary>
public class sql
{
	public sql()
	{
		//
		// TODO: Konstruktorlogik hier hinzufügen
		//
	}

public int buttonsidnrkey(string table)
     {
        int key = 0;

        OdbcConnection conn = new OdbcConnection(ConfigurationManager.ConnectionStrings["ADAstring"].ConnectionString);
        OdbcCommand cmd = new OdbcCommand("{call ZEITEN.COUNT.GETNEXTCOUNTER (?,?)}", conn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@NAME", OdbcType.VarChar, 20).Value = table;
        cmd.Parameters.Add("@ZAEHLER", OdbcType.Int).Direction = ParameterDirection.Output;
        
        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
            
        }
        catch(OdbcException e)
        {
            key = -1;
            Alert javascript = new Alert();
            javascript.Show(e.ToString());
        }
            conn.Close();

            key = Convert.ToInt16(cmd.Parameters["@ZAEHLER"].Value);

     
       return key;
    
    }

und nun meine Hilfsklasse für das Javascript

 
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Löst einen Alert per Javascript aus
/// </summary>
    public class Alert
    {
        public Alert() { }
        public void Show(string message)
        {
            string repMessage = message.Replace("'", "\\'");
            string script = "<script type=\"text/javascript\">alert('" + repMessage + "');</script>";

            Page page = HttpContext.Current.CurrentHandler as Page;
            if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
            {
                page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
            }
        }
    } 

Wäre nett wenn mir jemand helfen könnte oder einen anderen Weg zeigen könnte.

MFG

C
1.215 Beiträge seit 2004
vor 17 Jahren

Sieht eigentlich OK aus, so wie Du es gemacht hast.
Versuche einmal anstelle IsClientScriptBlockRegistered/RegisterClientScriptBlock IsStartupScriptRegistered/RegisterStartupScript zu verwenden.

Ansonsten schau einfach mal in den Output, ob das Script überhaupt gerendert wurde.

//EDIT:

string repMessage = message.Replace("'", "\\'");

Das ist überflüssig und auserdem eine falsche Escape-Sequenz. Wenn, dann musst Du eher die " escapen, und zwar per**&quot;**...

Grüsse
Cord

King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren

Danke für den Hinweiß. Es lag scheinbar an der Fehlermeldung die mir die olle Adabas DB zurück bringt. hab die Exceptionmeldung abgeändert auf e.Message.ToString() und nun klappt das ganze auch.

 
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Löst einen Alert per Javascript aus
/// </summary>
    public class Alert
    {
        public Alert() { }
        public void Show(string message)
        {
            string script = "<script type=\"text/javascript\">alert('" + message + "');</script>";
            Page page = HttpContext.Current.CurrentHandler as Page;
            page.ClientScript.RegisterStartupScript(typeof(Alert), "alert", script);
        }
    } 

Trotzdem danke.

MFG