Autor |
Beitrag |
c#ler
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: Fr 24.06.11 17:02
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
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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 
|
|
c#ler 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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  |
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
      
Beiträge: 222
Erhaltene Danke: 16
Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
|
Verfasst: 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 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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
Im Detail müsste ich mehr wissen.
|
|
norman2306
      
Beiträge: 222
Erhaltene Danke: 16
Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: c#ler
|
|
c#ler 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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
      
Beiträge: 222
Erhaltene Danke: 16
Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
|
Verfasst: 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 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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
      
Beiträge: 222
Erhaltene Danke: 16
Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
|
Verfasst: Mo 27.06.11 15:56
schick doch mal dein Template rum. Dann könnt ich mal drüber schauen, ob ich was sehe.
|
|
|