Element verwijderen uit ArrayList met Button

Status
Niet open voor verdere reacties.

kennethdm

Nieuwe gebruiker
Lid geworden
27 nov 2008
Berichten
1
Hallo,

voor een project voor school moet ik een website maken in c#. Wat ik op het moment probeer te doen, is het automatisch genereren van een aantal knoppen, met als basis een ArrayList. Als er dan op 1 van deze knoppen geklikt wordt, wordt het overeenstemmende element in de ArrayList verwijderd. Dit lukt, ware het niet dat ik om de een of andere reden 2 maal moet klikken op de knop, vooraleer het werkt... Hier is mijn code, in de hoop dat iemand mij kan wijzen waar ik fout zit... :

WebForm1.aspx.cs
Code:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace programmerenproject
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ArrayList list;

            if (!IsPostBack)
            {
                list = new ArrayList();
                list.Add("test1");
                list.Add("test2");
                list.Add("test3");
                list.Add("test4");
                ViewState["list"] = list;
                generateButtons(list);
            }
            else
            {
                list = (ArrayList)ViewState["list"];
                generateButtons(list);
            }
        }

        private void ClickMe(object sender, System.EventArgs e)
        {
            ArrayList list = (ArrayList)ViewState["list"];

            MyButton who = (MyButton)sender;
            list.RemoveAt(who.Element);
            lblTest.Text = list[who.Element].ToString();
            generateButtons(list);

            ViewState["list"] = list;
        }

        public void generateButtons(ArrayList l)
        {
            pnlTest.Controls.Clear();
            int number = l.Count;
            MyButton[] myButtons = new MyButton[number];
            for (int i = 0; i < number; i++)
            {
                myButtons[i] = new MyButton(i);
                myButtons[i].Text = l[i].ToString();
                myButtons[i].Click += new System.EventHandler(this.ClickMe);
                pnlTest.Controls.Add(myButtons[i]);
            }
        }
    }


}
MyButton.cs (extends Button om extra informatie achter de knop te kunnen stoppen)
Code:
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections;

namespace programmerenproject
{
    public class MyButton:Button
    {
        int element;

        public int Element
        {
            get { return element; }
            set { element = value; }
        }

        public MyButton(int e)
        {
            element = e;
        }

    }
}
WebForm1.aspx
Code:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="programmerenproject.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>  
    
        <asp:Panel ID="pnlTest" runat="server">
        </asp:Panel>
        <asp:Label ID="lblTest" runat="server"></asp:Label>
    
        <br />
    
    </div>
    </form>
</body>
</html>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan