Entwickler-Ecke
WinForms - Zuweisung: Datarow - string
c#ler - Fr 24.06.11 17:02
Titel: Zuweisung: Datarow - string
Ich habe einen Datatable mit vielen Datarows.
Ich möchte jeder Datarow jeweils einen individuellen String zuweisen.
z.B.
C#-Quelltext
1: 2:
| dt.Rows.Add(advancedList_main.DataRows.Add(new Row(0, 0, -1, -1, new string[] { Text = ("Kühlschrank") }))); |
dazu will ich einen String mit "leer".
C#-Quelltext
1: 2:
| dt.Rows.Add(advancedList_main.DataRows.Add(new Row(0, 0, -1, -1, new string[] { Text = ("Tiefkühlschrank") }))); |
dazu will ich einen String mit "voll".
Ich weiß nicht, wie ich die Zuweisung machen kann.
Ich verstehe nämlich nicht, wie ich den Index (quasi = Nummerierung) nutzen kann um eine Zuordnung vorzunehmen.
Vielen Dank
Ralf Jansen - Fr 24.06.11 19:07
Zitat: |
Ich möchte jeder Datarow jeweils einen individuellen String zuweisen. |
Einfach noch eine weitere Spalte der DataRow hinzufügen? Hast du ja jetzt auch für die vorhandenen 5 Spalten geschafft.
Um die Frage vollständig zu verstehen. Was ist Row für eine Klasse? Was ist advancedList_main für eine Klasse? Warum willst du irgendwas über einen Index zuordnen :gruebel:
c#ler - Mo 27.06.11 08:22
Ralf Jansen hat folgendes geschrieben : |
Zitat: | Ich möchte jeder Datarow jeweils einen individuellen String zuweisen. |
Einfach noch eine weitere Spalte der DataRow hinzufügen? Hast du ja jetzt auch für die vorhandenen 5 Spalten geschafft.
Um die Frage vollständig zu verstehen. Was ist Row für eine Klasse? Was ist advancedList_main für eine Klasse? Warum willst du irgendwas über einen Index zuordnen :gruebel: |
Nein, so funktioniert das nicht, obwohl es keine schlechte idee ist.
Ich vergleiche es mal mit einem Listview:
- Ich habe Items mit Tag (=^ quasi: Rows mit Index)
- jedem Item wird anhand des Tags ein String zugeordnet (Rows erhalten einen string anhand des Index, den Sie besitzen)
- ich rufe dann bei der Auswahl einer Row die Textbox auf, in der dann der String geschrieben wird.
= Somit wird mir in der Textbox der String angezeigt, der der jeweiligen Row zugeordnet ist.
Die Variante mit der Extra spalte geht nicht, da ich für ein CE5.0 Gerät programmiere und dieses einen relativ kleines Display hat, welches ich optimal nutzen muss. Daher wird die Textbox in den Vordergrund geschoben, sobald ich ein Item selectiere.
norman2306 - Mo 27.06.11 10:35
Das geht schon. Du fügst eine Spalte hinzu. Wie du die Table dann in einem Grid anzeigst, kannst du separat in dem Grid klären (-> DataGridRow hat z.B. eine Visibility-Eigenschaft).
Alternativ kannst du eine Dictionary (Dictionary<DataRow, String>) zum cheffrieren nutzen. Das ist aber langsam, aufwendig und nicht allzu schön.
c#ler - Mo 27.06.11 11:29
norman2306 hat folgendes geschrieben : |
Das geht schon. Du fügst eine Spalte hinzu. Wie du die Table dann in einem Grid anzeigst, kannst du separat in dem Grid klären (-> DataGridRow hat z.B. eine Visibility-Eigenschaft).
Alternativ kannst du eine Dictionary (Dictionary<DataRow, String>) zum cheffrieren nutzen. Das ist aber langsam, aufwendig und nicht allzu schön. |
Mit dictionary habe ich bereits versucht, aber ist dann an der dynamik gescheitert. (nicht meiner ;) )
Also soll ich:
Alle rows, die ich bis jetzt habe in Column 1 packen und die Rows (mit dem dazu passenden Text) in Column 2.
Wie verknüpfe ich diese dann miteinander?
und noch eine Frage, hat mal jemand ein gutes Tutorial zu Advancelists? Alles bei msdn habe ich durch, aber mir fehlt noch ein wenig die checkung :D
Im Detail müsste ich mehr wissen.
norman2306 - Mo 27.06.11 11:53
Du hast doch schon:
C#-Quelltext
1:
| dt.Rows.Add(advancedList_main.DataRows.Add(new Row(0, 0, -1, -1, "Kühlschrank"))); |
Da packst du einfach noch eine Spalte dran:
C#-Quelltext
1:
| dt.Rows.Add(advancedList_main.DataRows.Add(new Row(0, 0, -1, -1, "Kühlschrank", "voll"))); |
In dem DataGrid kannst du dann mit
C#-Quelltext
1:
| dataGrid1.Columns[5].Visibility = Visibility.Unvisible; |
Die Col unsichbar machen, so dass man das "voll" nicht sieht. Ganz einfach.
c#ler - Mo 27.06.11 12:18
norman2306 hat folgendes geschrieben : |
Du hast doch schon:
C#-Quelltext 1:
| dt.Rows.Add(advancedList_main.DataRows.Add(new Row(0, 0, -1, -1, "Kühlschrank"))); |
Da packst du einfach noch eine Spalte dran:
C#-Quelltext 1:
| dt.Rows.Add(advancedList_main.DataRows.Add(new Row(0, 0, -1, -1, "Kühlschrank", "voll"))); |
In dem DataGrid kannst du dann mit
C#-Quelltext 1:
| dataGrid1.Columns[5].Visibility = Visibility.Unvisible; |
Die Col unsichbar machen, so dass man das "voll" nicht sieht. Ganz einfach. |
vielen Dank, soweit sieht das sehr gut aus und ist gut durchdacht ;) aber...
datatable unterstütz kein row.visibility oder ähnliches.
Ich verwende ja einen datatable für meine advancedlist :)
norman2306 - Mo 27.06.11 13:12
Die Resco AdvancedList arbeitet meines Wissens mit einem Datentemplate, du kannst also sehr gut bestimmen, was wie und überhaupt angezeigt wird. Das sollte also kein Problem sein.
c#ler - Mo 27.06.11 15:52
norman2306 hat folgendes geschrieben : |
Die Resco AdvancedList arbeitet meines Wissens mit einem Datentemplate, du kannst also sehr gut bestimmen, was wie und überhaupt angezeigt wird. Das sollte also kein Problem sein. |
richtig, ich habe auch ein Template, welches ein Rowtemplate beeinhaltet, in dem widerum Celltemplates sind.
In einer Datatable sind die Templates gespeichert.
Jedoch kriege ich Rows in nur eine Column.
Wie füge ich daten einer anderen Column zu?
bin weder im Resco forum, noch bei MSDN, noch in der VS2008 Hilfe(auch Online) nicht fündig geworden.
norman2306 - Mo 27.06.11 15:56
schick doch mal dein Template rum. Dann könnt ich mal drüber schauen, ob ich was sehe.
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!