Hi Liste,
ich habe ein Problem beim manuellen Erzeugen eines PostBack und dem
Abfangen des ausgelösten Events.
Ich habe ein eigenes ascx erstellt innerhalb dessen eine HTML-Tabelle
erzeugt wird. Diese Tabelle besteht aus mehreren Zeilen, welche ich
manuell rendere.
Dabei habe ich die Zeile jeweils nochmal in eine eigene Klasse
ausgelagert. Hierin wird auch der __doPostBack-Code generiert. Hier mal
ein CodeSchnipsel.

public class ZoomButton : System.Web.UI.Control, IPostBackEventHandler
    {

[...]

protected override void Render(HtmlTextWriter writer)
        {

            HtmlImage ibtn = new HtmlImage();
            //ibtn.Command = "ZoomIn";
            ibtn.Src = ImagePath + imageoff;
            ibtn.ID = ID;
            ibtn.Border = 0;
            ibtn.Attributes.Add("onMouseOver", "javascript: this.src='"
+ ImagePath + imageon + "'");
            ibtn.Attributes.Add("onMouseOut", "javascript: this.src='" +
ImagePath + imageoff + "'");

            HyperLink hl = new HyperLink();
            hl.Attributes.Add("href", "javascript: __doPostBack('" +
this.UniqueID + "','" + ibtn.ID + "')");


                    hl.RenderBeginTag(writer);

                        ibtn.RenderControl(writer);

                    hl.RenderEndTag(writer);
}

        //Event property construct to optimize
        public event EventHandler ZoomMapClick
        {
            add
            {
                Events.AddHandler(EventClick,value);
            }
            remove
            {
                Events.RemoveHandler(EventClick,value);
            }
        }

        //Method to raise the event
        protected void OnClick(CommandEventArgs e)
        {
            EventHandler handler=Events[EventClick] as EventHandler;
            if(handler != null)
            {
                handler(this,e);
            }
        }
//
        protected override void OnInit(EventArgs e)
        {
            Events.AddHandler("EventClick", null);
            base.OnInit (e);           
        }
//
//
//        #region IPostBackEventHandler Member
//
        public void RaisePostBackEvent(string eventArgument)
        {
                  OnClick(new CommandEventArgs("zoom",
eventArgument));           
        }

Wenn ich nun ein PostBack ausführe springt er mit zwar in meine OnClick
Funktion, das Event wird aber nicht ausgelöst weil handler immer "null"
ist :-(
Ich vermute dass das am Page-LifeCycle hängt. Aber irgendwie muss ich es
doch schaffen ein Event aus meiner Klasse heraus, die wiederum in ein
Control eingebettet ist, auszulösen. Hatte vorher schon eine Variante
die funktionierte, weiß aber nicht mehr genau wie das lief :-(

Vielleicht habt ihr ne Idee?!?

Vielen Dank schonmal für Eure Hilfe!

Gruß
Tobias :-)
_______________________________________________
Asp.net Mailingliste, Postings senden an:
Asp.net@glengamoi.com
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an