Entwickler-Ecke
WinForms - Wie werden die Daten am besten eingeschränkt ?
moori64 - Mo 12.12.11 16:23
Titel: Wie werden die Daten am besten eingeschränkt ?
Hallo,
ich komme einfach nicht drauf wie ich es am besten machen könnte.
Ich habe ein datagridview und ringsherum comboboxen.
Ich habe eine Tabelle die ich mit meinen Comboboxen immer genauer eingrenzen will.
z.b.
10 gaststätten wurde von einer gewissen anzahl lieferanten beliefert und wenn ich mir in der combobox eine gasstätte aussuche will ich nur die lieferanten dieser gaststätte haben und wenn ich in einer combobox mir einen lieferanten auswähle dann will ich nur die daten von diesen einen lieferanten haben .
muss ich das auch mit ein master detail formular machen oder gibt es da eine andere möglichkeit.
die daten verändern sich ja immer und ich müsste die tabelle ja immer anpassen aber wie.
Th69 - Mo 12.12.11 17:58
Hallo,
ich hoffe mal, daß du DataBinding für dein DGV verwendest (z.B. über eine BindingSource oder eine DataTable)? Und dann brauchst du doch nur den Filter entsprechend deinen ComboBoxen setzen (bei mehreren dann entsprechend mit "AND" verknüpfen).
moori64 - Mo 12.12.11 18:30
hallo,
ich habe das buch von galileo aber mit filter setzten,
meinst du das so
C#-Quelltext
1:
| SqlCommand command = new SqlCommand("SELECT * FROM XXX where gaststaette = selected.index.changed ", conn); |
aus der combobox . jetzt steht der wert in der table.
erfolgt der nächste loop jetzt über table?
C#-Quelltext
1:
| dgvgast.bindingsource = table |
nur als beispiel aber die table verändert sich doch nicht oder doch ?
gruß uwe
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - Mo 12.12.11 18:55
Du könntest natürlich jedesmal eine neue Query absetzen (je nach Datenvolumen und Performance).
Oder aber du holst dir einmalig alle Daten und bindest das DGV dann an ein DataView der DataTable:
C#-Quelltext
1:
| dgv.DataSource = dataTable.DefaultView; |
Und über diesen DataView kannst du dann den Filter setzen, z.B.
C#-Quelltext
1:
| dataTable.DefaultView.Filter = "gaststaette = " + id; |
Beim Filter kannst du dann auch alle gängigen SQL Operatoren (AND, OR, NOT) benutzen.
Und bei den ComboBoxen solltest du auch DataBinding (DataSource, DisplayMember, ValueMember) benutzen.
Dann kannst du über
C#-Quelltext
1:
| int id = (int)comboBox.SelectedValue; |
an die Id für deinen Filter kommen (solange ValueMember auf die Id-Spalte gesetzt wurde).
Evtl. noch einen Dummy-Leereintrag zu der DataBinding-Liste hinzufügen und diesen dann entsprechend behandeln (d.h. für die Filterung ignorieren).
P.S: Lies dich am besten mal in die
DataView-Klasse [
http://msdn.microsoft.com/de-de/library/system.data.dataview.aspx] ein.
Edit: SelectedItem nach SelectedValue korrigiert, s.a.
http://www.c-sharp-forum.de/viewtopic.php?p=656211#656211
moori64 - Mo 12.12.11 20:55
hallo,
hab vielen dank für deine mühe , das werde ich mal tuen .
viele grüße
uwe
moori64 - Di 13.12.11 09:49
Guten Morgen,
ich habe da mal was angefangen, nun habe ich 2 probleme die comboboxen zeigen mir nun alle einträge aus den lieferanten und gaststätten an es müssten aber nur jeweils 6 sein
und wie kann ich das filter nun so setzten das wenn ich eine kneipe ausgewählt habe auch nur die daten dieser einen bekomme?
genau das selbe für die lieferanten auch?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| SqlConnection conn = new SqlConnection(connstr);
SqlCommand command = new SqlCommand("SELECT * FROM gaststaetten", conn); adapterchartdata = new SqlDataAdapter(command);
table = new DataTable(); adapterchartdata.Fill(table);
cmbwerk.DataSource = table; cmbwerk.DisplayMember = "gaststaette"; cmbwerk.ValueMember = "gaststaette";
cmblieferant.DataSource = table; cmblieferant.DisplayMember = "Lieferant"; cmblieferant.ValueMember = "Lieferant";
dgvmaterial.DataSource = table.DefaultView; |
Moderiert von
Th69: Beitragsformatierung überarbeitet.
moori64 - Di 13.12.11 12:14
Hallo,
ich werde das mal durcharbeiten , ich habe ja auch noch dieses riesen buch von galileo aber da ist sehr viel schon in wpf eingearbeitet und das soll ich
noch nicht machen , wurde mir gesagt ich soll erst mal bei den grundlagen bleiben. trotzdem vielen dank für deine mühe.
uwe
moori64 - Di 13.12.11 13:22
Hallo.
ich back jetzt erst mal kleine brötchen 2 comboboxen und ein datagrid , wenn ich das geschafft habe lade ich dich auf ein mittag ein.
bin ja öfters in bielefeld. :-)
gruß uwe
Moderiert von
Narses: Beiträge zusammengefassthallo nochmal,
ich weiß das ich dazu ein neues thema aufmachen müsste , aber ich habe folgendes probelem
wenn ich mit dem tool versuche ein txt datei in die datenbank einzulesen schlägt das immer fehl erstens habe ich in der textdatei
keine id spalte und 2 formatiert er immer die felder die ich als text deklariert habe in float obwohl ich die aber als char habe will.
ich kann das in der datenbank ja nicht mehr ändern oder doch ?
gruß uwe
moori64 - Do 15.12.11 09:57
Hallo,
@ TH69 brauche ich um dieses Filter zu setzen zwingend eine ID in der Datenbank ?
Momentan bekomme ich die ID mit dem Assistenten nicht eingespielt in die Datenbank.
Viele Grüße Uwe
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!