Toon posts:

[C#.NET] Button.Command niet uitgevoerd

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heey people,

Ben weer eens vastgelopen op een .NET iets.
Ik heb een loop waarin een aantal buttons worden gemaakt aan de hand van het aantal rows in de database. Deze buttons zijn om actien op een record uit te kunnen voeren.

Echter wordt de Button.Command niet uitgevoerd de eerste keer. Pas na een postback en een klik op dezelfde button wordt ie pas uitgevoerd.
Misschien logisch.. omdat de 'show' functie voor de event handling functie wordt uitgevoerd.
Als ik de show functie in de eventhandling functie aanroep, met het idee: 'eerst data muteren, dan laden en showen', dan worden de command event van die buttons ook niet uitgevoerd en dus wordt de show functie ook niet uitgevoerd.

Beide ideeen van mij lopen dus niet goed. Ik heb geen idee hoe ik dit kan oplossen

Stukkie code:
De show functie. Wordt aangeroepen in de Page_Load
Java:
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
private void ShowHolliday(int id)
{
Response.Write("ShowHoliday()<br>");
    try{
        CDataRet dataRet = new CDataRet();
        ArrayList al = new ArrayList();
        al = dataRet.getHollidays(id);
        
        tblHollidayView.Rows.Clear();
        TableRow trHeader = new TableRow();
        TableCell tdHeader = new TableCell();
        // table header
        tdHeader.Text="<b>Actions</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader = new TableCell();
        tdHeader.Text="<b>Type</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader = new TableCell();
        tdHeader.Text="<b>Owner</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader = new TableCell();
        tdHeader.Text="<b>Starttime</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader = new TableCell();
        tdHeader.Text="<b>Endtime</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader = new TableCell();
        tdHeader.Text="<b>Approved</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader = new TableCell();
        tdHeader.Text="<b>Deleted</b>";
        trHeader.Cells.Add(tdHeader);
        tdHeader.Dispose();
        tblHollidayView.Rows.Add(trHeader);
        trHeader.Dispose();
        IEnumerator e = al.GetEnumerator();
        while (e.MoveNext())
        {
            
            TableRow tr = new TableRow();
            TableCell td = new TableCell();
            Button btnAlter = new Button();
    
            btnAlter.CssClass = "buttonAction";
            btnAlter.CommandName = "alter";
            btnAlter.CommandArgument = Convert.ToString(((CHolliday)e.Current).Id);
            btnAlter.Command+=new CommandEventHandler(requestManMutation);
            btnAlter.Attributes.Add("onClick","openRequestWindow('"+Convert.ToString(((CHolliday)e.Current).Id)+"')");
            btnAlter.Text="Alter";
            td.Controls.Add(btnAlter);
            if (((CUser)Session["user"]).Employeeid != id || ((CUser)Session["user"]).Managerid == id){
                Button btnPurge = new Button();
                btnPurge.CssClass = "buttonAction";
                btnPurge.CommandName = "purge";
                btnPurge.CommandArgument = Convert.ToString(((CHolliday)e.Current).Id);
                btnPurge.Command+=new CommandEventHandler(requestManMutation);
                btnPurge.Text = "Delete";
                td.Controls.Add(btnPurge);
                Button btnApprove = new Button();
                btnApprove.CssClass = "buttonAction";
                btnApprove.CommandName = "approve";
                btnApprove.CommandArgument = Convert.ToString(((CHolliday)e.Current).Id);
                btnApprove.Command+=new CommandEventHandler(requestManMutation);
                btnApprove.Text = "Approve";
                td.Controls.Add(btnApprove);
            } else {
                Button btnDelete = new Button();
                btnDelete.CssClass = "buttonAction";
                btnDelete.CommandName = "delete";
                btnDelete.CommandArgument = Convert.ToString(((CHolliday)e.Current).Id);
                btnDelete.Command+=new CommandEventHandler(requestManMutation);
                btnDelete.Text = "Delete";
                td.Controls.Add(btnDelete);
            }
            tr.Cells.Add(td);
             
            td = new TableCell();
            td.Text = ((CHolliday)e.Current).TypeName;
            tr.Cells.Add(td);
            
            td = new TableCell();
            td.Text = ((CHolliday)e.Current).OwnerName;
            tr.Cells.Add(td);
            
            td = new TableCell();
            td.Text = ((DateTime)((CHolliday)e.Current).StartDate).ToString();
            tr.Cells.Add(td);
            
            td = new TableCell();
            td.Text = ((DateTime)((CHolliday)e.Current).EndDate).ToString();
            tr.Cells.Add(td);

            td = new TableCell();
            bool approved = ((CHolliday)e.Current).Approved;
            if (approved) 
            {
                td.Text = "True";
            } 
            else 
            {
                td.Text = "False";
            }
            tr.Cells.Add(td);
            td = new TableCell();
            bool deleted = ((CHolliday)e.Current).Deleted;
            if (deleted) 
            {
                td.Text = "True";
            } 
            else 
            {
                td.Text = "False";
            }
            tr.Cells.Add(td);
            td.Dispose();
            
            tblHollidayView.Rows.Add(tr);
            tr.Dispose();
        }
        Response.Write("bla");
    }
    catch(Exception ae)
    {
        Response.Write(ae.StackTrace.ToString()+" "+ae.Message.ToString());
    }
}


En de commandeventhandler
Java:
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
        private void requestManMutation(Object sender, CommandEventArgs e)
        {
            CDataRet dataRet = new CDataRet();
            Response.Write("requestManMutation()<br>");
            if ((e.CommandName).Equals("delete"))
            {
                dataRet.deleteRow(Convert.ToInt32(e.CommandArgument));
            }
            if ((e.CommandName).Equals("purge"))
            {
                dataRet.purgeRow(Convert.ToInt32(e.CommandArgument));
            }
            if ((e.CommandName).Equals("approve"))
            {
                dataRet.approveRow(Convert.ToInt32(e.CommandArgument));
            }
            Response.Write("<br><br><br>___________________"+e.CommandName + "_" + e.CommandArgument +"<BR>");
            /*
            if (Session["user"] != null){
                if (ddlEmployee.SelectedItem != null && ((CUser)Session["user"]).Employeeid != Convert.ToInt32(ddlEmployee.SelectedItem.Value))
                    ShowHolliday(Convert.ToInt32(ddlEmployee.SelectedItem.Value));
                else
                    ShowHolliday(((CUser)Session["user"]).Employeeid);
            } else {
                Response.Write("fok....null<br>");
            }
            */
        }

[ Voor 34% gewijzigd door Verwijderd op 21-03-2003 14:12 ]


  • alley
  • Registratie: Mei 2002
  • Laatst online: 18-08 20:40

alley

ahuh

aan het eind van je commandEventHandler:
code:
1
this.DataBind();

I am always doing that which I can not do, in order that I may learn how to do it. (Pablo Picasso)


Verwijderd

Topicstarter
Hmm... als ik dat doe.. dan ben ik de selectedndex van mijn dropdownlist kwijt.
hij bind dan de data uit de db opnieuw overschijving de dropdownlist viewstate :?

  • alley
  • Registratie: Mei 2002
  • Laatst online: 18-08 20:40

alley

ahuh

Dan moet je specifieke onderdelen van je pagina databinden ...

I am always doing that which I can not do, in order that I may learn how to do it. (Pablo Picasso)


Verwijderd

Topicstarter
Ik heb het nu zo dat als ik lijst met rows en knoppen heb en ik op 1 knop kli dat dan de lijst verdwijnt omdat ie de commandeventhandler niet uitvoerd. Daarin zit de aanroep naar de show functie.
Wat doe ik fout dat ie de commandevent niet pakt de eerste keer?

Verwijderd

Topicstarter
Cool. hij pakt het inderdaad. Ik heb de datatable gebind aan het eind van de event functie.
Dat werkt. hij voert bij de 1ste klik al de event uit.

thanks!

Verwijderd

Topicstarter
Ik heb alleen nu een probleem met de dropdownlist en dan onchange de datatable vervangen. Dat doet ie nu weer niet ..grr...
Moet ik nu ook de show functie uitvoeren aan het eind van de eventhandler?

Verwijderd

Topicstarter
Als ik een commandevent afhankelijke functie uitvoor(de showfunctie dus) na de Page_Load, voert ie dan het eerder afgevuurde event niet meer uit?

Nu heb ik de show functie in de pagelod staan. Op deze manier loopt het scherm altijd achter op de data, want het is al gerenderd voordat de data gemuteerd wordt. Als ik nu de show dus na de mutatie wil doen, voert ie de event niet uit. Hij komt niet meer in deCommandEventHandler functie.

Hoe moet ik dat dan oplossen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Ooit al van de edit-knop gehoord? Maak er eens gebruik van....

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dan wordt het een zooitje.........................
Ik kan toch niet die laatste messages samenvoegen?

Waarom is die editknop zo belangrijk eigenlijk.
Pagina: 1