DataGrid ItemsSource TableName

  • WPF
  • .NET 5–6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    DataGrid ItemsSource TableName

    Hallo,

    ich bin auf der Suche nach einer Möglichkeit die Information des TableNames aus einem Datagrid zu bekommen.
    Ich befülle das DataGrid ja nach Menüauswahl mit verschiedenen Tabellen

    C#-Quellcode

    1. case 3: // Adresstypen
    2. TblAdr = new DataTable();
    3. SdShow = new SqlDataAdapter(AsSql, dbConnection);
    4. SdShow.Fill(TblAdr);
    5. DgrShow.ItemsSource = null;
    6. DgrShow.ItemsSource = TblAdr.DefaultView;
    7. LiValue = TblAdr.Rows.Count;
    8. break;
    9. case 4: // RisikoKlassen
    10. TblRisk = new DataTable();
    11. SdShow = new SqlDataAdapter(AsSql, dbConnection);
    12. SdShow.Fill(TblRisk);
    13. DgrShow.ItemsSource = null;
    14. DgrShow.ItemsSource = TblRisk.DefaultView;
    15. LiValue = TblRisk.Rows.Count;
    16. break;
    17. case 5: // Sprachen
    18. TblSprachen = new DataTable();
    19. SdShow = new SqlDataAdapter(AsSql, dbConnection);
    20. SdShow.Fill(TblSprachen);
    21. DgrShow.ItemsSource = null;
    22. DgrShow.ItemsSource = TblSprachen.DefaultView;
    23. LiValue = TblSprachen.Rows.Count;
    24. break;


    Wenn ich dann Aktionen, wie z.B. ein Löschen durchführen möchte, wäre es schön den aktuellen TableName wieder auszulesen.
    Leider ist der Eintrag immer Leer. Ich helfe mir, indem ich den Namen manuell in einen String eintrage. Eleganter wäre es aber
    die Information aus dem DataGrid zurückzuholen.

    C#-Quellcode

    1. private void BtnDelete_Click(object sender, RoutedEventArgs e)
    2. {
    3. int LiId = 0;
    4. string LsSql = "";
    5. // DataTable holen
    6. DataTable dt = ((DataView)DgrShow.ItemsSource).Table;
    7. // Tablename holen
    8. string LsTableName = dt.TableName.ToString();
    9. // Id holen
    10. if (DgrShow.SelectedIndex >= 0)
    11. {
    12. // Nur wenn der Datensatz schon eine ID hat, wird sie hier für ein Löschen geholt
    13. if (((DgrShow.Items[DgrShow.SelectedIndex] as DataRowView).Row.ItemArray[0] != DBNull.Value))
    14. {
    15. LiId = int.Parse(dt.Rows[DgrShow.SelectedIndex].ItemArray.GetValue(0).ToString());
    16. if (LiId > 0)
    17. {
    18. LsSql = zAuditGetSqlStamm.GetSql(201, LiId, 0, GsTableName, "", dt);
    19. FetchData(201, LsSql, GsConnect);
    20. DataRowView row = (DataRowView)DgrShow.SelectedItem;
    21. dt.Rows.Remove(row.Row);
    22. TBStatus2.Text = "Datensatz gelöscht";
    23. }
    24. }
    25. }
    26. }


    Ich hoffe, es hat sich schon mal jemand mit dem Problem herumgeschlagen.
    Lauf CodeProjekt sollte es funktionieren. Das bezog sich aber auf das Datagrid vor WPF

    Grüße Ulf

    CodeTags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    kurze Zwischenfrage:
    Was passiert denn inhaltlich zwischen den 3 Fällen im ersten Codeblock anders? Ich seh da keine Unterschiede …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    namdi schrieb:

    Es werden dem Datagrid unterschiedliche Tabelen zugeordnet:

    Das glaub ich bei dem Code aber nicht:

    VB.NET-Quellcode

    1. TblAdr = new DataTable();
    2. '…
    3. TblRisk = new DataTable();
    4. '…
    5. TblSprachen = new DataTable();
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.