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
MyButton.cs (extends Button om extra informatie achter de knop te kunnen stoppen)
WebForm1.aspx
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]);
}
}
}
}
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;
}
}
}
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: