Autor Beitrag
Neggi
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 14.04.15 11:57 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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-Klasse an.
Neggi Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ausblenden C#-Quelltext
1:
if (combobox ==1)					

{...soll nur eine Übung angezeigt werden}

War das konkret genug?

LG

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
Neggi Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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:
ausblenden 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 user profile iconTh69: C#-Tags hinzugefügt
Neggi Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 14.04.15 19:25 
oder listBox, nicht listView!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

ausblenden 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()
{
    // Beispieldaten
    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");

    // Extension Method Verwendung
    var selectedExercises = dt.AsEnumerable().Select(x => x["exercise"]).RandomTake(3);
}        

//statische Klasse mit Erweiterungsmethoden
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.

Für diesen Beitrag haben gedankt: Neggi
Neggi Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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?
ausblenden 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 user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.