# Quick Start

Cretae a quick application with the C1DataCollection.

## Content

This quick start will guide you through the steps of adding a **DataGridView** control to your application and add data to it using the **C1DataCollection** class.
Complete the steps given below to see how the DataGridView control appears after data binding:

1. [Create a data source](/componentone/docs/services/online-datacollection/quickstart#step-1-create-a-data-source)
2. [Bind DataGridView to the data source](/componentone/docs/services/online-datacollection/quickstart#step-2-bind-datagridview-to-the-data-source)

The following image shows how the DataGridView control appears after completing the steps above.
![The image shows a grid control.](https://cdn.mescius.io/document-site-files/images/61bca276-a017-410c-b2f2-8d6dca57ae3b/images/quickstart.png)

### Step 1: Create a data source

1. Add a new class file, Customer, to the application.
2. Add the following code to the `Customer` file. In this example, we are using **Customer** class to represent data in the **DataGridView** control.

    ```vbnet
    Public Class Customer
        Private _id, _countryId As Integer
        Private _name, _email, _city As String
        Private _OrderDate As DateTime
        Private _orderTotal As Double
        Shared _rnd As Random = New Random()
        Shared _firstNames As String() = "Andy|Ben|Charlie|Dan|Ed|Fred|Herb|Jack|Mark|Ted".Split("|"c)
        Shared _lastNames As String() = "Ambers|Bishop|Cole|Danson|Evers|Frommer|Heath|Myers|Richards|Stevens".Split("|"c)
        Shared _emailServers As String() = "gmail|yahoo|outlook|aol".Split("|"c)
        Shared countries As String = "China-Beijing,Shanghai|India-Delhi,Kolkata|United States-Washington,New York|Russia-Moscow,Saint Petersburg|Japan-Tokio,Yokohama"
        Shared _countries As KeyValuePair(Of String, String())() = countries.Split("|"c).[Select](Function(str) New KeyValuePair(Of String, String())(str.Split("-"c).First(), str.Split("-"c).Skip(1).First().Split(","c))).ToArray()
        Public Sub New()
        End Sub
        Public Sub New(ByVal id As Integer)
            id = id
            Name = GetName()
            Email = String.Format("{0}@{1}.com", (Name.Substring(0, 3)).ToLower(), GetString(_emailServers))
            CountryId = _rnd.[Next](/componentone/docs/services/online-datacollection/quickstart) Mod _countries.Length
            Dim cities = _countries(CountryId).Value
            City = GetString(cities)
            OrderDate = DateTime.Today.AddDays(-_rnd.[Next](1, 365)).AddHours(_rnd.[Next](0, 24)).AddMinutes(_rnd.[Next](0, 60))
            OrderTotal = Math.Round(_rnd.NextDouble() * 10000.0, 2)
        End Sub
        Public Property ID As Integer
            Get
                Return _id
            End Get
            Set(ByVal value As Integer)
                If value <> _id Then
                    _id = value
                End If
            End Set
        End Property
        Public Property Name As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                If value <> _name Then
                    _name = value
                End If
            End Set
        End Property
        Public Property Email As String
            Get
                Return _email
            End Get
            Set(ByVal value As String)
                If value <> _email Then
                    _email = value
                End If
            End Set
        End Property
        Public Property City As String
            Get
                Return _city
            End Get
            Set(ByVal value As String)
                If value <> _city Then
                    _city = value
                End If
            End Set
        End Property
        Public Property CountryId As Integer
            Get
                Return _countryId
            End Get
            Set(ByVal value As Integer)
                If value <> _countryId AndAlso value > -1 AndAlso value < _countries.Length Then
                    _countryId = value
                End If
            End Set
        End Property
        Public Property OrderDate As DateTime
            Get
                Return _OrderDate
            End Get
            Set(ByVal value As DateTime)
                If value <> _OrderDate Then
                    _OrderDate = value
                End If
            End Set
        End Property
        Public Property OrderTotal As Double
            Get
                Return _orderTotal
            End Get
            Set(ByVal value As Double)
                If value <> _orderTotal Then
                    _orderTotal = value
                End If
            End Set
        End Property
        Private Shared Function GetString(ByVal arr As String()) As String
            Return arr(_rnd.[Next](arr.Length))
        End Function
        Private Shared Function GetName() As String
            Return String.Format("{0} {1}", GetString(_firstNames), GetString(_lastNames))
        End Function
        Public ReadOnly Property Country As String
            Get
                Return _countries(_countryId).Key
            End Get
        End Property
        Public Shared Function GetCustomerList(ByVal count As Integer) As ObservableCollection(Of Customer)
            Dim list = New ObservableCollection(Of Customer)()
            For i As Integer = 0 To count - 1
                list.Add(New Customer(i))
            Next
            Return list
        End Function
    End Class
    ```

```csharp
public class Customer
{   
    int _id, _countryId;
    string _name, _email, _city;
    DateTime _OrderDate;
    double _orderTotal;

    static Random _rnd = new Random();
    static string[] _firstNames =
       "Andy|Ben|Charlie|Dan|Ed|Fred|Herb|Jack|Mark|Ted".Split('|');
    static string[] _lastNames =
       "Ambers|Bishop|Cole|Danson|Evers|Frommer|Heath|Myers|Richards|Stevens".Split('|');
    static string[] _emailServers = "gmail|yahoo|outlook|aol".Split('|');
    static string countries =
       "China-Beijing,Shanghai|India-Delhi,Kolkata|United States-Washington,New York|Russia-Moscow,Saint Petersburg|Japan-Tokio,Yokohama";
    static KeyValuePair<string, string[]>[] _countries =
       countries.Split('|').Select(str => new KeyValuePair<string, string[]>(str.Split('-').First(),
           str.Split('-').Skip(1).First().Split(','))).ToArray();
    
    public Customer()
    {
    }

    public Customer(int id)
    {
        ID = id;
        Name = GetName();
        Email = string.Format("{0}@{1}.com", (Name.Substring(0, 3)).ToLower(), GetString(_emailServers));
        CountryId = _rnd.Next() % _countries.Length;
        var cities = _countries[CountryId].Value;
        City = GetString(cities);
        OrderDate = DateTime.Today.AddDays(-_rnd.Next(1, 365)).AddHours(_rnd.Next(0, 24)).AddMinutes(_rnd.Next(0, 60));
        OrderTotal = Math.Round(_rnd.NextDouble() * 10000.00, 2);
    }
    
    public int ID
    {
        get { return _id; }
        set
        {
            if (value != _id)
            {
                _id = value;
            }
        }
    }
    public string Name
    {
        get { return _name; }
        set
        {
            if (value != _name)
            {
                _name = value;
            }
        }
    }
    public string Email
    {
        get { return _email; }
        set
        {
            if (value != _email)
            {
                _email = value;
            }
        }
    }
    public string City
    {
        get { return _city; }
        set
        {
            if (value != _city)
            {
                _city = value;
            }
        }
    }

    public int CountryId
    {
        get { return _countryId; }
        set
        {
            if (value != _countryId && value > -1 && value < _countries.Length)
            {
                _countryId = value;
            }
        }
    }
    public DateTime OrderDate
    {
        get { return _OrderDate; }
        set
        {
            if (value != _OrderDate)
            {
                _OrderDate = value;
            }
        }
    }

    public double OrderTotal
    {
        get { return _orderTotal; }
        set
        {
            if (value != _orderTotal)
            {
                _orderTotal = value;
            }
        }
    }
  
    static string GetString(string[] arr)
    {
        return arr[_rnd.Next(arr.Length)];
    }
    static string GetName()
    {
        return string.Format("{0} {1}", GetString(_firstNames), GetString(_lastNames));
    }
    public string Country
    {
        get { return _countries[_countryId].Key; }
    }

    // ** static list provider
    public static ObservableCollection<Customer> GetCustomerList(int count)
    {
        var list = new ObservableCollection<Customer>();
        for (int i = 0; i < count; i++)
        {
            list.Add(new Customer(i));
        }
        return list;
    }  
}
```

### Step 2: Bind DataGridView to the data source

1. Add the following dlls to your application to work with DataCollection:
    * C1.DataCollection.dll
    * C1.Win.DataCollection.dll

    You can also use the available DataCollection NuGet packages from the following locations:
    * C1.DataCollection: [https://www.nuget.org/packages/C1.DataCollection](https://www.nuget.org/packages/C1.DataCollection)
    * C1.Win.DataCollection: [https://www.nuget.org/packages/C1.Win.DataCollection](https://www.nuget.org/packages/C1.Win.DataCollection)

    For information on how to add NuGet packages to your application, see [Adding NuGet Packages to your App](https://developer.mescius.com/componentone/docs/win/online-studio/addingnuget).
2. Drag and drop the DataGridView control from the Toolbox onto your form.
3. Switch to the Code view and add the following code to bind DataGridView to the data source.

```vbnet
Dim cv As C1DataCollection(Of Customer) = New C1DataCollection(Of Customer)(Customer.GetCustomerList(100))
grid.ItemsSource = New C1DataCollectionBindingList(cv)
```

```csharp
cv = new C1DataCollection<Customer>(Customer.GetCustomerList(100));
grid.DataSource  = new C1DataCollectionBindingList(cv);
```

Run the application and observe that the grid displays a Customers table.