[C#] DataGridView verwenden

  • DataGridView aus der Toolbox auf eine Form ziehen
  • rechts klicken und “Spalten bearbeiten …” wählen
  • ungebundene Spalte, Name “cCheck”, Typ “DataGridViewCheckBoxColumn”, Headertext “Check” hinzufügen
  • ungebundene Spalte, Name “cTime”, Typ “DataGridViewTextBoxColumn”, Headertext “Zeit” hinzufügen
  • ungebundene Spalte, Name “cValue”, Typ “DataGridViewTextBoxColumn”, Headertext “Wert” hinzufügen
  • ungebundene Spalte, Name “cUnit”, Typ “DataGridViewTextBoxColumn”, Headertext “Einheit” hinzufügen
  • Schließen
  • auf “Zeit” klicken und Eigenschaft Layout->Frozen auf true (fixiert Spalte “Zeit” beim Scrollen)
  • Ok zum Schließen
  • DataGridView Eigenschaften->AllowUserToAddRows = false
  • DataGridView Eigenschaften->AllowUserToDeleteRows = false
private void DataGridView()
{
    // Zeilen zum DataGridView hinzufügen
    for (int i = 1; i < 10; i++)
    {
        // neue Zeile erzeugen
        DataGridViewRow r = new DataGridViewRow();
        r.CreateCells(dataGridView1);

        // Zellwerte eintragen
        r.Cells[0].Value = true; // Check-Spalte
        r.Cells[1].Value = i.ToString();
        r.Cells[2].Value = (i * i).ToString();
        r.Cells[3].Value = "mm";

        // Zeile dem DataGridView hinzufügen
        dataGridView1.Rows.Add(r);
    }

    // Spaltenname von "Zeit" auf "Index" ändern
    dataGridView1.Columns[0].HeaderCell.Value = "Index";
    // Schrift ändern, siehe auch Eigenschaft ColumnHeadersDefaultCellStyle im Properties-Editor
    dataGridView1.Columns[0].HeaderCell.Style.Font = new Font("Microsoft Sans Serif", 9.75F, FontStyle.Bold);

    // Zugriff auf Zelle [0, 0]
    dataGridView1[0, 0].Value = "0.0";
    dataGridView1[0, 0].Style.ForeColor = Color.Fuchsia;
    dataGridView1[0, 0].Style.BackColor = Color.LightGreen;
}

[C#] Mehrere DataGridViews über eine Scollbar scrollen

// Scrollereignis der Scrollbar
private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
    // Column des ersten DataGridViews setzen
    GridView1.FirstDisplayedScrollingColumnIndex = (int)(GridView1.ColumnCount * hScrollBar1.Value / 100.0);
    // Column des zweiten DataGridViews setzen
    GridView2.FirstDisplayedScrollingColumnIndex = (int)(GridView2.ColumnCount * hScrollBar1.Value / 100.0);
}

[C#][OleDB] Daten aus MSAccess in einem DataGridView darstellen

string sOleConnStr = string.Empty;
string sMDBFile = @"c:\Test.mdb";
string sUser = "user";
string sPassword = "password";
string sSQL = "SELECT * FROM table";

if (sMDBFile.Contains(".mdb"))
{
    sOleConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sMDBFile + ";User ID=" + sUser + ";Jet OLEDB:Database Password=" + sPassword;
}
else
    if (sMDBFile.Contains(".accdb"))
    {
        sOleConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sMDBFile + ";User ID=" + sUser + ";Jet OLEDB:Database Password=" + sPassword;
    }

if (string.IsNullOrEmpty(sOleConnStr))
{
    MessageBox.Show("Sie haben eine nicht unterstützte MS Access Datenbankdatei ausgewählt.", AssemblyInfo.AssemblyProduct, MessageBoxButtons.OK, MessageBoxIcon.Warning);
    return;
}

OleDbConnection olecon = null;
OleDbDataReader olereader = null;

try
{
    olecon = new OleDbConnection(sOleConnStr);
    olecon.Open();

    OleDbCommand cmd = new OleDbCommand(sSQL, olecon);
    olereader = cmd.ExecuteReader();

    BindingSource bSource = new BindingSource();
    bSource.DataSource = olereader;

    // Datagridview auf einem Formular zum anzeigen der Daten
    dgvData.DataSource = bSource;
}
catch (Exception eole)
{
    MessageBox.Show(eole.Message, AssemblyInfo.AssemblyProduct, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
    // aufräumen
    if (olereader != null) olereader.Close();
    if (olecon != null) olecon.Close();
}

[C#][ODBC] Daten aus einer Tabelle in einem DataGridView anzeigen

// dgvGrid == DataGridView auf dem Formular
private void btnOpen_Click(object sender, EventArgs e)
{
    OdbcConnection conn = null;
    OdbcDataReader reader = null;

    try
    {
        // Verbindung herstellen
        conn = new OdbcConnection(@"dsn=MyDSN;UID=user;PWD=password;");
        conn.Open();

        // SQL-Kommando abschicken
        OdbcCommand cmd = new OdbcCommand("SELECT Names FROM MyTable", conn);
        // Daten einlesen
        reader = cmd.ExecuteReader();

        // Bindingsource erstellen
        BindingSource bSource = new BindingSource();
        // Reader an Source binden
        bSource.DataSource = reader;

        // Source an DataGridView übergeben
        dgvData.DataSource = bSource;
    }
    catch (Exception)
    {
    }
    finally
    {
        // aufräumen
        if (reader != null) reader.Close();
        if (conn != null) conn.Close();
    }
}
  • Weiterführender Link: Link

[C#] CSV-Daten in DataTable einlesen und in DataGridView anzeigen

// dgvGrid == DataGridView auf dem Formular
private void btnOpen_Click(object sender, EventArgs e)
{
    // Datei öffnen
    if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        // DataTable hält die gesplitteten CSV-Daten
        DataTable dt = new DataTable();

        // Datei öffnen, hier als UTF8
        using (StreamReader sr = new StreamReader(openFileDialog.FileName, Encoding.UTF8))
        {
            // bis Dateiende lesen
            while (!sr.EndOfStream)
            {
                // Zeile einlesen und anhand des Trennzeichens ";" in einzelne Spalten (stringarray) splitten
                string[] currentline = sr.ReadLine().Split(new string[] { ";" }, StringSplitOptions.None);

                // wenn neue Tabelle (noch keine Spalten enthalten)
                if (dt.Columns.Count == 0)
                {
                    // n Spalten der ersten gelesenen Zeile hinzufügen
                    for (int i = 0; i < currentline.Length; i++)
                    {
                        // als Spaltenüberschrift die eingelesenen Teile des Stringarrays verwenden
                        dt.Columns.Add(currentline[i]);
                    }
                }
                else
                {
                    // ansonsten Daten des Stringarrays zeilenweise hinzufügen
                    dt.Rows.Add(currentline);
                }
            }

            // Stream schließen
            sr.Close();
        }

        // DataTable an das Gitter auf der Oberfläche übergeben und somit anzeigen
        dgvGrid.DataSource = dt;
    }
}