Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Anzahl der gefilterten Zeilen ändern
Neggi - Di 14.04.15 11:57
Titel: Anzahl der gefilterten Zeilen ändern
Hallo,
sorry dass ich ein neues Thema eröffne, habe aber noch nix dergleichen irgendwo gefunden.
Es geht darum dass ich eine gefilterte Access Tabell mit unterschiedlichen Traingsübungen anzeigen lasse. Es werden 10 Übungen angezeigt. Nun will ich per combobox auswählen wie viele von diesen zehn Übungen gemacht werden sollen. Ich klicke im Combobox-Feld 5 an, und dann sollen mir von diesen 10 Übungen nur mehr 5 random Übungen aus der Tabelle angezeigt werden.
Danke für die Hilfe.
Th69 - Di 14.04.15 14:30
Hallo,
ich denke, du erwartest ein bißchen zuviel von einem Forum - wir sind kein Codegenerator!
Am besten, du überlegst dir selber, wie du das implementieren würdest und wenn du konkrete Fragen dazu hast (am besten gleich dann
relevanten Code dazu posten), stellst du sie.
Also was ist deine konkrete Frage dazu?
Weißt du nicht, wie man eine Zufallszahl erzeugt? Dann siehe dir die
Random [
https://msdn.microsoft.com/de-de/library/system.random%28v=vs.110%29.aspx]-Klasse an.
Neggi - Di 14.04.15 19:05
Ok,sorry, das war vielleicht zu allgemein gehalten von mir!
Ich hänge einen Screenshot von meiner Form dazu damit das besser vorstellbar ist was mein Problem betrifft:
Durch die Checkboxen kann ich angeben welche Übungen im datagrid view dargestellt werdensollen. nun is es die Aufgabe diese Liste der Übungen zu verkleinern, je nachdem was ich in der Combobox auswähle...sollte ich die Zahl eins auswählen, sollte von diesen dargstellten Übungen nur mehr eine beliebige angezeigt werden wenn ich auf den Button "Übungen anzeigen" klicke.
was muss ich in die if- Verzweigung reinschreiben...wenn ich zum Beispiel habe
{...soll nur eine Übung angezeigt werden}
War das konkret genug?
LG
Moderiert von
Th69: C#-Tags hinzugefügt
Neggi - Di 14.04.15 19:14
andere Möglichkeit ist dass die Zahl 4 ausgewählt wurde und dann 4 Übungen in einer Listview in der gleichen Form dargestellt werden:
C#-Quelltext
1: 2:
| string Übung1 = dt.Rows[0][0].ToString(); listView1.Text = string.Format(Übung1); |
...so stellt er nur die erste Übung da, ich will aber dass er 4 random Übungen anzeigt.
Moderiert von
Th69: C#-Tags hinzugefügt
Neggi - Di 14.04.15 19:25
oder listBox, nicht listView!
Ralf Jansen - Di 14.04.15 19:33
Welches Control ist herzlich egal. Wenn du eine Untermenge der Übungen willst ist die Datenstruktur in dem die stecken relevant aber nicht womit die angezeigt werden also scheinbar hier eine DataTable.
Eine Möglichkeit wäre zum Beispiel.
Bedenke so ist dann auch die Reihenfolge innerhalb der Untermenge zufällig wenn du eine bstimmte Reihenfolge haben willst mußt du nochmal sortieren bzw. anders vorgehen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| static void Main() { var dt = new DataTable(); dt.Columns.Add("exercise", typeof(string)); dt.Rows.Add("Curls"); dt.Rows.Add("Klimmzug"); dt.Rows.Add("Kniebeugen"); dt.Rows.Add("Liegestütz");
var selectedExercises = dt.AsEnumerable().Select(x => x["exercise"]).RandomTake(3); }
public static class ExtensionMethods { public static IEnumerable<TSource> RandomTake<TSource>(this IEnumerable<TSource> source, int count) { return source.OrderBy(x => Guid.NewGuid()).Take(count); } } |
Edit : Über die Zufälligkeit von NewGuid() läßt sich bestimmt trefflich streiten. Ich denke für diesen Anwendungsfall reicht es.
Neggi - Di 14.04.15 19:57
Viele Dank für die Hilfe.
Kann ich ihm auch sagen dass er nur eine bestimmte Anzahl an Übungen ins datagrid view schreiben soll wenn ich das datagrid view befülle?
C#-Quelltext
1: 2: 3: 4:
| OleDbDataAdapter da = new OleDbDataAdapter(command); DataTable dt = new DataTable(); da.Fill(dt); dataGridView1.DataSource = dt; |
...hier lass ich die Übungen die ich vorher durch eine if-Verzweigung ausgesicht habe anzeigen...geht dass das ich in diesem code etwas ändere dass er mir nur zum Beispiel 3, oder 4 und nicht alle Übungen anzeigt?
Moderiert von
Th69: C#-Tags hinzugefügt
Ralf Jansen - Di 14.04.15 20:03
Auf die Transferleistung solltest du selber kommen. Du hast da eine DataTable mit vermutlich allen Übungen und ich hab dir ein Beispiel mit einer ExtensionMethod gezeigt die man auf eine DataTable anwendet um eine zufällige Untermenge zu bekommen.
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!