Entwickler-Ecke
Basistechnologien - Checkedlistbox Tag, Text
c#ler - Di 23.07.13 10:35
Titel: Checkedlistbox Tag, Text
Guten Tag,
ich komme nicht weiter.
Vorgehen:
Ich hole mir ein Dataset mit person-Id's und dazugehörigen person-Namen.
In einer checkedlistBox sollen die Namen angezeigt werden.
Ich wähle 2-3 items aus und drücke im Form auf meinen Übergabe Button.
Nun die Crux an der Sache.
Es sollen die Id's der ausgewählten Items an meine Übergabefunktion übergeben werden.
Kurz:
In meiner Checkedlistbox sollen die Namen angezeigt werden.
Nach der Auswahl sollen die Id's (ACHTUNG: nicht die Indexe) übergeben werden.
Ansatz:
Ist es besser für jedes Item in der checkedListbox ein Objekt zu erstellen und es mit Tag und Text zu versehen oder gibt es eine bessere Variante.
(Mit dieser habe ich es versucht, bin aber mit meinem Wissen schnell an meine Grenzen gestoßen)
Bitte Hilfe
Ralf Jansen - Di 23.07.13 10:45
Dein Gedankengang ist richtig und das passende Objekt hast du schon du must kein neues Erfinden. Binde einfach deine DataTable an die ListBox.
C#-Quelltext
1: 2: 3:
| ((ListBox)MeineLiebeCheckedlistbox).DataSource = meineLiebeDataTable; ((ListBox)MeineLiebeCheckedlistbox).DisplayMember = "Name"; ((ListBox)MeineLiebeCheckedlistbox).ValueMember = "Id"; |
Zum Auslesen der Daten, das du wahrscheinlich duch das iterieren über Items machst, kannst du jedes Item dann in ein DataRowView Objekt casten. Wenn du typisiertes Dataset hast dann in die entsprechende typisierte Variante.
c#ler - Di 23.07.13 11:15
Ralf Jansen hat folgendes geschrieben : |
Zum Auslesen der Daten, das du wahrscheinlich duch das iterieren über Items machst, kannst du jedes Item dann in ein DataRowView Objekt casten. Wenn du typisiertes Dataset hast dann in die entsprechende typisierte Variante. |
Danke für das die Info zum Binding... habe das bereits mit Grids so gemacht, habe aber nicht gewusst, dass das mit der Listbox auch funktioniert.
Ich dachte dazu müsste ich eine rtb verwenden.
Hört sich das auslesen nur kompliziert an oder fehlt mir wirklich soviel wissen... :)
Ralf Jansen - Di 23.07.13 11:41
Zitat: |
Danke für das die Info zum Binding... habe das bereits mit Grids so gemacht, habe aber nicht gewusst, dass das mit der Listbox auch funktioniert. |
Databinding sollte mit jedem Control gehen. Eine CheckedListBox ist eher ein Fremdkörper in Windows, heißt es ist eigentlich kein typisches Windows Control. Darum verhält es sich nicht ganz konform. Die Databinding Properties sind nur versteckt aber natürlich da. Das gezeigte casten auf Listbox ist eigentlich auch unnötig.
Zitat: |
Hört sich das auslesen nur kompliziert an oder fehlt mir wirklich soviel wissen... :) |
Ist nicht kompliziert. Die Checkbox ist aber halt nur drangestrickt an die Listbox und ist leider nicht über irgendeinen ~natürlichen~ Weg auslesbar.
Beispiel
C#-Quelltext
1: 2: 3: 4:
| List<Int32> deineGechecktenIds = new List<Int32>(); for (int i = 0; i < checkedListBox1.Items.Count; i++) if (checkedListBox1.GetItemChecked(i)) deineGechecktenIds.Add((Int32)(((DataRowView)checkedListBox1.Items[i])["Id"])); |
Einfacher und windowstypischer wäre eine ListBox mit Multiselektion.
c#ler - Di 23.07.13 15:01
Ich habs jetzt.
Vielen Dank für die Hilfe, nächstes mal bin ich schlauer ;)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| List<Int32> checked = new List<Int32>(); for (int i = 0; i < checkedListBoxPerson.Items.Count; i++) { if (checkedListBoxPerson.GetItemChecked(i)) { checked.Add((Int32)(((DataRowView)checkedListBoxPerson.Items[i])["Id"])); } }
foreach (int id in checked) { var Daten = ServiceContainer.GetService<IROF>().GetRemoteObject<IPR>().HolePersonSB(id);
using (var reportForm = Reporting.ReportVF.CreatePSBReportView(Daten)) { reportForm.ShowDialog(this); } } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!