Autor Beitrag
melanie75
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 11.09.07 20:23 
Hallo,
Ich möchte einen Array (2 Dimensionen) an ein datagridview binden. Hat jemand eine Idee, wie es funktioniert? Meine (wohl naiven) Versuche, die Arrays in Datatables, DataSets zu überführen, scheiterten. Hat jemand eine Idee?
Tabellen aus Datenbanken anbinden klappt ohne Probleme. Ich bin Anfänger
Vielen Dank schon mal
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 12.09.07 08:53 
Hallo Melanie,

ich habe es so noch nie gemacht, aber das Prinzip ist klar: Es kann jede Datenmenge an ein DataGridView gebunden werden. Ob das Array dafür geeignet ist oder Du besser eine List<MyClass> o.ä. verwenden solltest, musst Du ausprobieren.

Grundsätzlich geht das über die DataGridView.DataSource-Eigenschaft und eine BindingSource. Leider gibt es das passende Beispiel unter BindingSource nur in VB, aber das sollte als Anregung helfen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
    Private listBox1 As ListBox
    Private binding1 As BindingSource

        Dim fonts As New MyFontList()
        //  hier wird die Liste mit Inhalt belegt; dann Zuordnung:
        binding1.DataSource = fonts
        listBox1.DataSource = binding1

Du müsstest MyFontList durch Deine Liste ersetzen und statt der ListBox Dein DataGridView verwenden; dann solltest Du gut vorankommen.

Viel Erfolg! Jürgen
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 12.09.07 17:02 
user profile iconJüTho hat folgendes geschrieben:
Leider gibt es das passende Beispiel unter BindingSource nur in VB, [...]
:gruebel: In meinem Windows SDK nicht.
Es wäre mir aber neu, dass die BindingSource mit multidimensionalen Arrays umgehen kann (über IList kann es ja jedenfalls nicht funktionieren). Am Einfachsten dürfte das über den Virtual Mode möglich sein:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
    int[,] map = new[,] {{163213},
               {510118},
               {96712},
               {415141}};
    public Form1()
    {
      InitializeComponent();

      grid.RowCount = map.GetLength(0);
      grid.ColumnCount = map.GetLength(1);
    }

    void dgvCellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
    {
      e.Value = map[e.RowIndex, e.ColumnIndex];
    }

    // uswusf...
melanie75 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 12.09.07 22:36 
Hallo JüTho,
leider funktioniert Dein Vorschlag nicht
Hallo Khabarakh
Der springende Punkt ist ... dgvCellValueNeeded(Object.....)
es klappt-Danke