tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
849
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ryandel Ryandel ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    10
    Hallo ich bin neu hier und werkel zur Zeit an einer Webapplikation (Im Bereich C# bin ich dann schon nciht mehr ganz so neu )

    Mein Problem ist folgendes:
    In einem Teil der WebApp werden dynamisch Buttons erstellt welchen ich durch Button.Click += new EventHandler(edtAct_Click); Ein Event zuweisen möchte...tut sich leider nix; Bei statischen Buttons ist alles normal. Ich vermute, dass die Konstruktion aus PreRender bei mir das Problem sein könnte, aber muss leider so gemacht werden...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    
    namespace LiveReport.forms
    {
        public partial class projekteDetails : System.Web.UI.Page
        {
            //Interfaces
            KB.Interfaces.IBL myBL = new KB.BL.BL();
            #region myPageLoad
            private void myPageLoad()
            {
                int ID=1;
                FillProjekt(ID);
            }
            #endregion
     
            protected void FillProjekt(int P_ID)
            {
                if (P_ID == 0) return;
                DataSet dsProjekt = myBL.getProjekt(P_ID);
                DataRow Projekt = dsProjekt.Tables[0].Rows[0];
                txtName.Text = Projekt.ItemArray[1].ToString();
                txtPercent.Text = Projekt.ItemArray[3].ToString();
                caEnde.Text = Projekt.ItemArray[4].ToString();
     
                string[] activities = { "1","2","3"};
                int i = 0;
     
                foreach (string activity in activities)
                {
                    TableHeaderRow aktHead = new TableHeaderRow();
                    TableHeaderCell aktHeadc = new TableHeaderCell();
                    aktHeadc.Text = activity;
                    aktHead.Cells.Add(aktHeadc);
                    Modules.Rows.Add(aktHead);
                    DataSet dsEnde = myBL.getModules(P_ID, i++);
                    foreach (DataRow dr in dsEnde.Tables[0].Rows)
                    {
                        TableRow newrow = new TableRow();
                        TableCell newcell = new TableCell();
                        newrow.Cells.Add(newcell);
     
                        TableCell controls = new TableCell();
                        Button edit = new Button();
                        edit.ID = "edtAct" + dr.ItemArray[0].ToString();
                        edit.Text = "PUSH";
                        edit.Click += new EventHandler(edtAct_Click);
     
                        controls.Controls.Add(edit);
                        newrow.Cells.Add(controls);
                        
                        Modules.Rows.Add(newrow);
                    }
                }
            }
     
     
            #region PreRender
            protected void Projekte_PreRender(object sender, System.EventArgs e)
            {
                DataBind();
                this.myPageLoad();
            }
            #endregion
     
            override protected void OnInit(EventArgs e)
            {
                InitializeComponent();
                base.OnInit(e);
            }
     
            private void InitializeComponent()
            {
                this.PreRender += new System.EventHandler(this.Projekte_PreRender);
     
            }
     
            protected void savenewAct(object sender, EventArgs e)
            {
                //Dieser Button funktioniert, ist der statische
                //myBL.insertAct(P_ID,act)
            }
     
            protected void edtAct_Click(object sender, EventArgs e)
            {
                string actID = ((Button)sender).ID;
                //Hier tut sich nix, ist der dynamische
            }
     
            #endregion
        }
    }

    Hoffentlich kann mir iwer hier helfen.

    Gruß
    Ry
     

  2. #2
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Mir springt kein Fehler ins Auge.
    Ruf doch mal probeweise direkt nach dem hinzufügen des Click-Handlers die Button.PerformClick-Methode auf und gehe mit dem Debugger ein Einzelschritten durch den Code. So kannst du herausfinden, ob der EventHandler wirklich nicht richtig gesetzt wird.
     

  3. #3
    Ryandel Ryandel ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    10
    Hallo Shakie,

    also mir bietet die Programmierhilfe dir PerformClick Methode nichtmal an, fehlt da nen using Verweis?
    Die PerFormClick Methode scheint es nur zu geben wenn man im namespace System.Windows.Forms arbeitet, ich bin aber dadurch dass es sich um eine Webanwendung handelt im namespace LiveReport.forms...

    trotzdem schon mal danke für deine Hilfe.
    Geändert von Ryandel (08.10.10 um 11:35 Uhr)
     

  4. #4
    Ryandel Ryandel ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    10
    Ich habe das ganze nochmal durchgetestet und mir ist aufgefallen, dass er beim Klick auf einen der Buttons nicht nur den Button als objekt im PostBack parst sondern die komplette seite.

    Hatte per string test = ((Button)sender).ID; versucht die ID des Buttons abzufangen...komisch ist auch, dass ich in nem ähnlichen Projekt das genauso gelöst habe mit den dynamischen Buttons es da aber geht. Bin echt am verzweifeln.

    Gruß
    Ry
     

  5. #5
    Ryandel Ryandel ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    10
    PUSH

    Ich habe nochmal etwas rumprobiert. Die Applikation ignoriert sogar gekonnt Lambda-Verweise alá:

    Code :
    1
    2
    3
    4
    
    pushAct.Click += (clicker, args) =>
                    {
                        tueirgendwas();
                    };

    Also bekomme ich generell aus allen Button.Click nur nen Postback ohne Daten das wars...arg ich raffs nicht. Das muss doch funktionieren!
     

  6. #6
    Ryandel Ryandel ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    10
    Problem gelöst
     

  7. #7
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Was war denn der Fehler? Vielleicht hat der eine oder andere Leser einmal das selbe Problem wie du und freut sich bestimmt, wenn er deine Lösung erfahren darf
    Du könntest dann noch den Status des Themas auf "erledigt" ändern.
     

  8. #8
    Ryandel Ryandel ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    10
    Woran genau es lag kann ich nicht sagen.
    Ich habe den fraglichen Teil des Programms aus dem PreRender entfernt und nach Page_Load verschoben. Danach dann darauf achten dass auf die entsprechenden Teile aus dem PreRender noch ein DataBind() gesetzt wird, da das Programm sonst die Inhalte "vergisst".

    Scheinbar bekommt das Programm es nicht mit wenn im PreRender irgendwas ausgeführt wird, wäre so meine Idee dazu.

    Gruß
    Ry
     

Ähnliche Themen

  1. Buttons, ID-Vergabe und Eventhandler
    Von chriss_2oo4 im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 10.11.08, 00:46
  2. Erstentwurf Prerender
    Von Zechelon im Forum 3D-Stills
    Antworten: 7
    Letzter Beitrag: 31.10.07, 09:30
  3. Antworten: 0
    Letzter Beitrag: 21.06.07, 16:24
  4. EventHandler
    Von Jo-Jo im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 27.04.07, 08:49
  5. Problem mit dynamischen MC-Buttons
    Von deep_popel im Forum Flash Plattform
    Antworten: 13
    Letzter Beitrag: 04.04.06, 17:10