ComponentOne InputPanel for WPF
Binding InputPanel with DataTable
Data Binding > Binding InputPanel with DataTable

InputPanel supports data binding through data tables. You can create a data table using the standard DataTable class and bind it to the InputPanel control by setting the ItemsSource property.

Complete the following steps to bind InputPanel to data through data table.

  1. Set up the application
  2. Create a data table to bind with InputPanel
  3. Bind the data table to InputPanel

Set up the application

  1. Create a WPF application.
  2. Add the InputPanel control and name it InPanel.

Back to Top

Create a data table to bind with InputPanel

  1. Add a new class, Employee, to the application.
  2. Add the following import statement.
    Imports System.Data
    
    using System.Data;
    
  3. Create an object, employee, of DataTable class.
    'Create a data table
    Private _employees As DataTable = Nothing
    
    //Create a data table
    private DataTable employees = null;
    
  4. Add data fields to be added in the table.
    'Add data fields 
    Shared _rnd As New Random()
    Shared _firstNames As String() = "Andy|Ben|Charlie|Dan|Ed|Fred|Gil".Split("|"c)
    Shared _lastNames As String() = "Ambers|Bishop|Cole|Danson|Evers|Trask|Ulam".Split("|"c)
    Shared _countries As String() = "China|India|United States|Japan|Myanmar".Split("|"c)
    
    //Add data fields 
    static Random _rnd = new Random();
    static string[] _firstNames = "Andy|Ben|Charlie|Dan|Ed|Fred|Gil".Split('|');
    static string[] _lastNames = "Ambers|Bishop|Cole|Danson|Evers|Trask|Ulam".Split('|');
    static string[] _countries = "China|India|United States|Japan|Myanmar".Split('|');
    
  5. Add class definition to assign fields to the data table.
    'Initialize data table
    Public ReadOnly Property Employees() As DataTable
        Get
            If _employees Is Nothing Then
                _employees = New DataTable("Employees")
                _employees.Columns.Add("ID", System.Type.[GetType]("System.String"))
                _employees.Columns.Add("FirstName", System.Type.[GetType]("System.String"))
                _employees.Columns.Add("LastName", System.Type.[GetType]("System.String"))
                _employees.Columns.Add("Countries", System.Type.[GetType]("System.String"))
                _employees.Columns.Add("BirthDate", System.Type.[GetType]("System.DateTime"))
    
                For row As Integer = 0 To 9
                    Dim dRow As DataRow = _employees.NewRow()
                    dRow("ID") = _rnd.[Next](100000, 999999).ToString()
                    dRow("FirstName") = _firstNames(_rnd.[Next](_firstNames.Length))
                    dRow("LastName") = _lastNames(_rnd.[Next](_lastNames.Length))
                    dRow("Countries") = _countries(_rnd.[Next](_countries.Length))
    
    
                    dRow("BirthDate") =
                        DateTime.Today.AddDays(-_rnd.[Next](1, 365))
                    _employees.Rows.Add(dRow)
                Next
            End If
            Return _employees
        End Get
    End Property
    
    //Initialize data table
    public DataTable Employees
    {
        get
        {
            if (employees == null)
            {
                employees = new DataTable("Employees");
                employees.Columns.Add("ID", 
                    System.Type.GetType("System.String"));
                employees.Columns.Add("FirstName", 
                    System.Type.GetType("System.String"));
                employees.Columns.Add("LastName", 
                    System.Type.GetType("System.String"));
                employees.Columns.Add("Countries", 
                    System.Type.GetType("System.String"));
                employees.Columns.Add("BirthDate", 
                    System.Type.GetType("System.DateTime"));
    
                for (int row = 0; row < 10; row++)
                {
                    DataRow dRow = employees.NewRow();
                    dRow["ID"] = _rnd.Next(100000, 999999).ToString();
                    dRow["FirstName"] = _firstNames[_rnd.Next(_firstNames.Length)];
                    dRow["LastName"] = _lastNames[_rnd.Next(_lastNames.Length)];
                    dRow["Countries"] = _countries[_rnd.Next(_countries.Length)]; ;
                    dRow["BirthDate"] = DateTime.Today.AddDays(-_rnd.Next(1, 365));
                    employees.Rows.Add(dRow);
                }
            }
            return employees;
        }
    }
    

Back to Top

Bind the data table to InputPanel

  1. Set the ItemsSource property in XAML view to bind InputPanel with the data table.
    XAML
    Copy Code
    <c1:C1InputPanel Name="InPanel" ItemsSource="{Binding Employees}"/>
    
  2. Switch to the MainWindow.xaml.cs file and set the DataContext property.
    'Set data context
    Me.DataContext = New EmployeeDataContext()
    
    //Set data context
    this.DataContext = new Employee();
    

Back to Top