Entwickler-Ecke
Basistechnologien - DataGridView bestimmte Zelle, Datensatz oder Spalte ausgeben
Mr.y - Do 24.06.10 07:52
Titel: DataGridView bestimmte Zelle, Datensatz oder Spalte ausgeben
Hallo,
hoffe, dass das der richtiger Bereich dafür ist.
Und wenn ich Daten aus irgendeinem Medium im DataGridView ausgeben lasse, mach ich das so:
C#-Quelltext
1:
| DataGrid.Datasource = Dataset.Tables[0] |
So wird mir das Ganze ausgegeben, aber ich möchte auch mal eine bestimmte Zeile, Datensatz oder Spalte im DataGrid ausgeben.
Bisher kann ich das nur in einer Textbox.
Weiss mir da jemand zu helfen?
Danke im Voraus.
Moderiert von
Christian S.: C#-Tags hinzugefügt
danielf - Do 24.06.10 08:05
Hallo,
wie wählst du den die Kriterien aus anhand von denen du den Datensatz auswählst? Eventuell könntest du diese einfach als Filter für deine DatenSource (über Binding) setzen und so den gewünschten Effekt erzielen.
Gruß
Mr.y - Do 24.06.10 09:26
danielf hat folgendes geschrieben : |
Hallo,
wie wählst du den die Kriterien aus anhand von denen du den Datensatz auswählst? Eventuell könntest du diese einfach als Filter für deine DatenSource (über Binding) setzen und so den gewünschten Effekt erzielen.
Gruß |
Danke für deine schnelle Antwort.
Kriterien habe ich erstmal nicht,
ich wollte einfach wissen, welche Möglichkeiten bestehen um eben eine bestimmte Zelle, ganze Spalte oder einen Datensatz auswählen zu können.
ich mache das erstmal so:
C#-Quelltext
1: 2: 3:
| Spalte = mDaten.Tables["USER"].Columns["Titel"]; Zeile = mDaten.Tables["USER"].Rows[0]; dataGridView.DataSource = Zeile[Spalte]; |
Er zeigt mir aber ganzen Datensatz an, statt nur eine Zelle von der Spalte "Titel"
Moderiert von
Christian S.: C#-Tags hinzugefügt
JüTho - Do 24.06.10 13:12
Du musst dich entscheiden, was du willst.
DataTable anzeigen:
C#-Quelltext
1:
| dataGridView.DataSource = mDaten.Tables["USER"]; |
Um eine
bestimmte Zeile anzuzeigen, ist es am besten, eine
DataView auf die DataTable zu legen mit einem bestimmten Filter und diese DataView als DataSource zuzuweisen.
C#-Quelltext
1: 2: 3: 4:
| DataView dv = new DataView(); dv.Table = mDaten.Tables["USER"]; dv.RowFilter = "ID = 37"; dataGridView.DataSource = dv; |
Um eine
bestimmte Spalte anzuzeigen, gibt es (mindestens) zwei Möglichkeiten: (a) Es wird die DataTable mit
AutoGenerateColumns=true an das DGV zugewiesen; danach werden für alle nicht gewünschten DGV-Spalten Visible auf false gesetzt. (b) Es wird die DataTable mit AutoGenerateColumns=false an das DGV zugewiesen; die gewünschte Spalte wird manuell erzeugt und dem DGV zugewiesen.
Um eine
bestimmte Zelle anzuzeigen, ist das DGV nicht geeignet. (Genauer: Es ist eher Quatsch, wenn ein Control mit n*m Zellen auf eine Größe von 1*1 beschränkt wird.) Wenn du das unbedingt willst, kannst du die o.g. Verfahren kombinieren. Besser ist es, eine TextBox oder ComboBox oder MaskedTextBox zu verwenden oder was auch immer geeignet ist.
Übrigens hilft ein Blick in die SDK-Doku/MSDN/Hilfe, was als DataSource geeignet ist:
DataGridView.DataSource ist zwar als
object deklariert, aber aus den Beschreibungen geht hervor, dass der Typ zu einem der folgenden Interfaces passen muss:
* The
IList interface, including one-dimensional arrays.
* The
IListSource interface, such as the DataTable and DataSet classes.
* The
IBindingList interface, such as the BindingList<(Of <(T>)>) class.
* The
IBindingListView interface, such as the BindingSource class.
Gruß Jürgen
Mr.y - Do 24.06.10 13:20
danke sehr für deinen ausführlichen Beitrag :)
hab mir schon gedacht, dass man bei den Spalten an der "visible" eingenschaft was machen könnte.
Aber das mit dem "DataView" ist echt gut, danke nochmals :)
Da entsteht bei mir noch ne Frage zur "DataView"
Da entsteht bei mir ein seltsamer Fehler
und zwar, wenn ich mir alles ausgeben lasse findet er das Formular "Menü"
aber wenn ich bei folgender XML ihm sage:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <User ID="2"> <localeIP>172.xxx.xx.xx</localeIP> <Benutzer>Kai</Benutzer> <Adresse>Buchstehude</Adresse> <Sammlung>DVD</Sammlung> </User> <Fenstergröße Formular="Menü"> <Höhe>3945</Höhe> <Breite>8520</Breite> </Fenstergröße> |
C#-Quelltext
1: 2:
| dvAnsicht.Table = mDaten.Tables["Fenstergröße"]; dvAnsicht.RowFilter = "Formular = Menü"; |
sagt er mir: Die Spalte "Menü" wurde nicht gefunden (Die gibts ja auch nicht, es gibt die Spalte: Formular)
ABER
C#-Quelltext
1: 2:
| dvAnsicht.Table = mDaten.Tables["User"]; dvAnsicht.RowFilter = "ID = 2"; |
geht es wunderbar, was mache ich da verkehrt??? :(
Moderiert von
Christian S.: XML-Tags hinzugefügt
Moderiert von
Christian S.: C#-Tags hinzugefügt
Th69 - Do 24.06.10 20:05
Strings müssen in Anführungsstriche geschrieben werden (wie bei SQL):
C#-Quelltext
1:
| dvAnsicht.RowFilter = "Formular = 'Menü'"; |
Mr.y - Fr 25.06.10 08:57
Th69 hat folgendes geschrieben : |
Strings müssen in Anführungsstriche geschrieben werden (wie bei SQL):
C#-Quelltext 1:
| dvAnsicht.RowFilter = "Formular = 'Menü'"; | |
ahh die Hochkommas...hab mir schon gedacht, dass man den String irgendwie in die Gänsefüßchen setzen sollte, hab die Hochkommas vergessen, danke sehr
JüTho - Fr 25.06.10 09:13
Der Vollständigkeit halber: Alle diese Schreibweisen (RowFilter, z.T. Sort) gehen nach den Regeln, die unter DataColumn.Expression beschrieben sind. Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!