ListBox - Text herausbekommen

nostar

Grünschnabel
Hallo community,

ich habe ein kleines/größeres Probelm und bin etwas ratlos mit einer ListBox in ASP.NET (C#), die mehrere Einträge enthält.

Die ListBox benutze ich wie ein DomainUpDown, das heißt ich habe im wesentlichen nichts anderes gemacht, als die Ansicht auf eine Zeile begrenzt. Ich will jetzt, dass der User mittels Auf-/Ab-Buttons ein Element auswählen kann, ohne auf ein Item zu klicken. Dieses "Auswählen" habe ich mittels PreRender abgefangen, einzig und alleine das derzeit angezeigte Objekt/den derzeit angezeigten Text kann ich nicht übernehmen, da logischerweise kein SelectedItem/SelectedIndex vorhanden ist, da ja nur mittels auf/ab die Anzeige verändert wurde. Wie komme ich trotzdem an meine Daten?

Ich bin auch für jede andere Lösung dankbar, einzig und allein eine DropDownList möchte ich nicht verwenden, weil ca. 100 Einträge in der Liste vorhanden sind und ich die Anzeige mit Scrollbalken hässlich finde. Ich danke euch schon mal für eure Anstrengungen, bin echt schon am verzweifeln.

LG nostar
 
Naja, du weißt ja welches Objekt gerade angezeigt wird. Wie?

Nun, du hast eine Liste der Objekte. Zu Beginn wird das erste angezeigt (Index 0). Setz dieses gleich beim Aufruf als SelectedItem. Wenn du jetzt in der Liste auf deinen Down-Button klickst, dann gehts um eine Position runter (Index 1) -> Setzen der SelectedItem-Eigenschaft.
 
Hi

Ich habe eigentlich gedacht, dass standardmäßig der Index auf -1 steht, aber ich glaub ich habe verstanden was du meinst. Etwa so:

[
Code:
ArrayList liste = new ArrayList();

liste.Add("blabla");
liste.Add("blublu");

this.myListBox.DataSource = liste;
this.myListBox.DataBind();

this.myListBox.SelectedIndex = 0;

Danach einfach nur den Event SelectedIndexChanged abfangen weil die Auswahl mitgeht, stimmt's?

Andere Frage: Gibt's vielleicht noch die Möglichkeit, die ListBox auf ReadOnly zu setzen? Dann kann der User sich nicht mittels Tastatureingabe vorhanteln, indem er sich in die Liste klickt und irgendetwas drückt. Ich habe leider keinen Zugriff auf mein Projekt, daher die (blöde) Frage.

Ich werde es heute abend gleich ausprobieren und dich in mein tägliches Abendgebet zu den ASP.NET-Göttern einschliessen. Danke erstmal!

LG nostar
 
Index 0 hast dann, wenn du beim Laden deiner Listbox gleich den ersten Eintrag markierst. (SelectedIndex = 0). Danach kannst das entweder über ein Event abfakeln, oder eben wenn der User rauf oder runter navigiert. Ist dann deine Entscheidung.

Naja, du könntest eigentlich die ListBox auf Enabled=False setzen, aber dann kannst auswählen auch nichts mehr. Eventuell baust dir eigene Buttons für das Blättern. Ich weiß jetzt allerdings nicht, ob du die Scrollbar von der ListBox weg bekommst, die würde dann nämlich stören.
 
hellas nochmal,

na dann ist es ja genauso wie ich's gemeint habe.

was die sache mit dem springen betrifft ist es ja mehr oder weniger egal, ob er über die tastatur eingibt: der event für den IndexChange wird ja sowieso ausgelöst und geht von daher hand in hand mit dem auf/ab-Button.

Danke für Deine Hilfe!
nostar
 
Hallo,

ich hab's gerade ausprobiert, der SelectedIndex geht aber leider nicht mit :(

Ich kann auch leider nicht SelectedIndex += 1 benutzen, da ich nicht weiß, ob nach oben oder unten gedrückt wurde. Hier mein bisheriger Code:

Code:
this.beginnZeiten = (ArrayList)this.zeiten.Clone();
this.endeZeiten = (ArrayList)this.zeiten.Clone();

this.ListBox1.DataSource = beginnZeiten;
this.ListBox1.DataBind();
this.ListBox1.SelectedIndex = 0;

this.ListBox2.DataSource = endeZeiten;
this.ListBox2.DataBind();
this.ListBox1.SelectedIndex = 0;

private void ListBox1_PreRender(object sender, System.EventArgs e)
{
	//derzeitig angezeigtes Objekt herausholen?

	//keine Ahnung ob der Auswahl-Button nach oben oder nach unten gedrückt wurde
}

Wie komme ich nach dem Rendern an das Objekt, ohne das der SelectedIndex zur Verfügung steht?

LG nostar
 

Neue Beiträge

Zurück