DataGridView Selektions Problem

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    DataGridView Selektions Problem

    Hallo Leute,

    Ich hab ein warscheinlich einfaches Problem nähmlich lass ich alle Zeilen auslesen die makiert habe(DataGridView).
    Jetzt möchte ich eigentlich nur noch die ID's davon haben.
    Ok kurz nachgeschaut ah ein Field namens Index gibt es doch das gibt leider den Index in der Selektierung selbst wieder und nicht von allen.

    Ok hatte es jetzt mal so probiert:

    VB.NET-Quellcode

    1. Dim rows As New List(Of DataGridViewRow)()
    2. For Each row As DataGridViewRow In profileGrid.Rows
    3. rows.Add(row)
    4. Next
    5. Dim selectedRows As Integer() = New Integer(profileGrid.SelectedRows.Count - 1) {}
    6. Dim i As Integer = 0
    7. For Each row As DataGridViewRow In profileGrid.SelectedRows
    8. selectedRows(i) = rows.FindIndex(Function(tmpP) tmpP = row)
    9. i += 1
    10. Next


    Und nocheinmal der unübersetze Quellcode:

    Quellcode

    1. List<DataGridViewRow> rows = new List<DataGridViewRow>();
    2. foreach(DataGridViewRow row in profileGrid.Rows)
    3. rows.Add(row);
    4. int[] selectedRows = new int[profileGrid.SelectedRows.Count];
    5. int i = 0;
    6. foreach (DataGridViewRow row in profileGrid.SelectedRows)
    7. {
    8. selectedRows[i] = rows.FindIndex(tmpP => tmpP == row);
    9. i++;
    10. }


    Funktioniert auch nicht. Damit meine ich es gibt nur die Falschen Index's zurück.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „BlackSpell“ ()

    Programmierst Du in Visual CBasicSharp.Net :?: :thumbsup: :thumbsup: :thumbsup:
    Ja was willst Du eigentlich mit den selected-Irgendwas machen?
    Sieh Dir mal diese paar Zeilen an:

    VB.NET-Quellcode

    1. For Each item In DataGridView1.SelectedCells
    2. ' mit item was tun
    3. Next
    4. For Each item In DataGridView1.SelectedColumns
    5. ' mit item was tun
    6. Next
    7. For Each item In DataGridView1.SelectedRows
    8. ' mit item was tun
    9. Next
    Ist da was für Dich dabei?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nein ich programmiere diese Anwendung in C# habs aber mal in VB übersetzt gehabt.

    Ich brauche halt den Index der Selektierten Zeilen

    Ich sage mal ich habe jetzt 5 Zeilen makiere aber die 3. und die 5. dann möchte ich halt auf 3 und 5 kommen.

    Mit Index würde ich auf 1 und 2 kommen.
    SelectedIRGENDWAS ist eien Collection der selektierten Elemente.
    Sieh Dir mal die Properties von dem an, was beim mir Item heißt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja ich weiß aber ich glaube du verstehst nicht genau was ich da genau definiere oder du hast nicht genau hingeschaut.
    selectedRows soll ja nur eine Aufzählung sein. Die aber nicht direkt mit der Collection verbunden wird.

    Ich definiere Kurz:

    selectedRows - Integer - Beinhaltet die Index's der selektierten Items bzw solls
    profileGrid - DataGridView - Wird dann ja wohl klar sein
    row - List(DataGridViewRow) - Zum ermitteln des Index
    Ok, also ich habe ein DataGridView names profileGrid.
    In diesen Grid kann man Spalten selektieren an der Seite.
    Diese kann man auslesen duch profileGrid.SelectedRows. Alle Zeilen speicher ich zwischen in einer Liste damit ich später den Index besser bestimmen kann
    Anschließend erstelle ich eine Array vom Typ Integer in der sollen diese ID's rein.
    Nun gehe ich alle selektierten durch und ermittel den Index in der Liste doch dieser Index stimmt nicht.

    So besser?

    BlackSpell schrieb:

    speicher ich zwischen in einer Liste damit ich später den Index besser bestimmen kann

    Wie gesagt, den Sinn dieses Vorhabens verstehe ich nicht.
    SelectedItems beinhaltet alle Cells mit all deren Eigenschaften. Du könntest jederzeit alle Informationen daraus holen. Wozu nochmal extra in eine Collection/Liste speichern ?

    BlackSpell schrieb:

    bräuchte ich aber Index von den selektierten Zeilen

    Was für einen Index? Und wozu brauchst Du ihn?
    Jedes Cell in der SelectedCells hat doch schon einen RowIndex und einen ColumnIndex. Damit kannst Du doch schon jede dieser SelectedCells identifizieren.
    Beispiel:

    VB.NET-Quellcode

    1. For Each cell As DataGridViewCell In DataGridView1.SelectedCells
    2. Dim cellValue = "- NOTHING -"
    3. If cell.Value IsNot Nothing Then cellValue = cell.Value.ToString
    4. Debug.Print("RowIndex: {0}, ColumnIndex: {1}, Content: {2}, ValueType: {3}, Style: {4}", cell.RowIndex, cell.ColumnIndex, cellValue, cell.ValueType, cell.Style.ToString)
    5. Next
    Poste mal ein Stück Code und eine genaue Beschreibung was damit zu tun ist, um Deinen Effekt zu reproduzieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!