Laden...

[ASP .NET 3.5] Welche CheckBox aus einer CheckBoxList wurde geklickt?

Erstellt von ente vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.239 Views
ente Themenstarter:in
24 Beiträge seit 2006
vor 11 Jahren
[ASP .NET 3.5] Welche CheckBox aus einer CheckBoxList wurde geklickt?

Hallo Zusammen,

ich fülle eine ChecktBoxList über die DataSouce und möchte wissen, wenn eine beliebe Box geklickt wurde, welche denn angeklickt wurde 😃

Das einzige Event, welches zur Verfügung stehen scheint, ist das "SelectedIndexChanged"-Event, welches aber die komplette Liste als Sender übergeben bekommt und ich leider nicht feststellen kann welche CheckBox geklickt wurde.

<asp:CheckBoxList ID="ChB_Foo" runat="server" CssClass="fliesstext" RepeatColumns="4" RepeatDirection="Horizontal" AutoPostBack="True">
</asp:CheckBoxList>
ChB_Foo.DataSource = MyManager.GetData()
ChB_Foo.DataTextField = "Name"
ChB_Foo.DataValueField = "ID"
ChB_Foo.DataBind()
protected void ChB_Foo_SelectedIndexChanged(object sender, EventArgs e)
{
  CheckBoxList liste = (CheckBoxList)sender;

  //Watt nu?
}

Ich muss mit der Id der geklickten Box dynamisch UserControls an die Oberfläche geben und daher sind Lösungen mit JavaScript leider nicht möglich. Das Iterieren über alle CheckBoxen um zu schauen, welche insgesamt angeklickt sind hilft mir auch nicht weiter, da ich nicht feststellen kann, welche zuletzt geklickt wurde.

Hat jemand eine Idee?

Danke im Voraus und schöne Grüße,
ente

It's always darkest just before it goes pitch black.

1.696 Beiträge seit 2006
vor 11 Jahren

Hallo,

wenn du den Eventhandler zugewiesen hast, dann kann du mit .SelectedIndex den Wert auch ermitteln. IMHO fehlt bei dir

<asp: ... onSelectedIndexChanged="ChB_Foo_SelectedIndexChanged" ...

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

5.941 Beiträge seit 2005
vor 11 Jahren

Hallo Ente

Kommst du in den Eventhandler rein?
Wenn ja, einfach über MSDN - ListControl.SelectedIndex den Index und ggf. die Value über den Indexer holen.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

ente Themenstarter:in
24 Beiträge seit 2006
vor 11 Jahren

Hallo,

danke für die Rückmeldungen.

@vbprogger: das Event ist richtig über den Designer verdrahtet und wird auch getriggert.

@Peter: Das Event wird gefeuert. Leider ist der Selected Index immer das kleinste Ordinal aus der Liste (vgl. MSDN). D.H. wenn ich das 5 Element meiner Liste klicke bekomme ich trotzdem nur den ersten Eintrag zurück.

Vielleicht hat noch jemand eine Idee...

Ansonsten nehme ich ein Panel und fülle dies mit Checkboxen, die dann jeweils ein das OnClickEvent einzeln feuern.

It's always darkest just before it goes pitch black.

ente Themenstarter:in
24 Beiträge seit 2006
vor 11 Jahren

So, ich habe meine Lösung.

Zwar kann man wohl wirklich nicht feststellen, welches Element geklickt wurde, aber ich mache es mir jetzt einfach:

ich schreibe immer die Ids der geklickten Elemente in die Session und gleich mit den aktuellen Werten ab. So kann ich dann immer feststellen, welches Element gerade geklickt wurde.

It's always darkest just before it goes pitch black.

16.842 Beiträge seit 2008
vor 11 Jahren

Beachte, dass der Anwender mehrere Fenster offen haben kann und somit Deine Logik, wenn Du alles in die Session schreibst, beeinflusst wird.
Leider vergessen das die meisten......

5.941 Beiträge seit 2005
vor 11 Jahren

Hallo ente

Hast du beim um das Databinding auch ein...

if (!IsPostBack)
{
    // <DataBinding
}

...?

Hast du mehrere Checkboxen ausgewählt?
Dann würde ich über die CheckBoxItems iterieren.

Ansonsten einfach das Beispiel seperat oder im Projekt minimal nachbauen und schauen ob es dann funktioniert, so können Fehler ausgeschlossen werden.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011