FlexGrid for WinForms | ComponentOne
Saving and Loading / Loading Grids from Databases
In This Topic
    Loading Grids from Databases
    In This Topic

    You can also load grid data from a database. This is different from data binding, which keeps a live connection between one or more controls and the underlying data source. To load data from a database, you can use DataReader objects, as shown below:

    To write code in Visual Basic

    Visual Basic
    Copy Code
    Private Sub _btnData_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles _btnData.Click
        '  Prepare DataReader.
        Dim strConn As String = "data source=MYMACHINE;initial catalog=Northwind;"
        Dim myConn As New SqlClient.SqlConnection(strConn)
        Dim myCMD As New SqlClient.SqlCommand("SELECT * FROM Employees", myConn)
        Dim myReader As SqlClient.SqlDataReader = myCMD.ExecuteReader()
        '  Build the grid structure from the DB schema.
        Dim dt As DataTable = myReader.GetSchemaTable()
        _flex.Cols.Count = 1
        Dim dr As DataRow
        For Each dr In  dt.Rows
            Dim c As C1.Win.C1FlexGrid.Column = _flex.Cols.Add()
            c.Caption =(c.Name <= CStr(dr("ColumnName")))
            c.DataType = CType(dr("DataType"), Type)
        Next dr
        '  Populate the grid.
        _flex.Rows.Count = 1
        Dim row As Integer = 1
        Dim cols As Integer = dt.Columns.Count
        Dim v As Object() = CType(Array.CreateInstance(GetType(Object), cols), Object())
        While myReader.Read()
            _flex.AddItem(v, row + 1, 1)
        End While
        '  Cleanup.
    End Sub

    To write code in C#

    Copy Code
    private void _btnData_Click(object sender, System.EventArgs e)
        // Prepare DataReader.
        string strConn = "data source=MYMACHINE;initial catalog=Northwind;";
        System.Data.SqlClient.SqlConnection myConn = new System.Data.SqlClient.SqlConnection(strConn);
        System.Data.SqlClient.SqlCommand myCMD = new System.Data.SqlClient.SqlCommand("SELECT * FROM Employees", myConn);
        System.Data.SqlClient.SqlDataReader myReader = myCMD.ExecuteReader();
        // Build the grid structure from the DB schema.
        DataTable dt = myReader.GetSchemaTable();
        _flex.Cols.Count = 1;
        foreach (DataRow dr in dt.Rows)
            Column c = _flex.Cols.Add();
            c.Caption = c.Name = (string)dr["ColumnName"];
            c.DataType = (Type)dr["DataType"];
        // Populate the grid.
        _flex.Rows.Count = 1;
        int row = 1;
        int cols = dt.Columns.Count;
        object[] v = (object[])Array.CreateInstance(typeof(object), cols);
        while (myReader.Read())
            _flex.AddItem(v, row++, 1);
        // Cleanup.
    See Also