Articles in this section
Category / Section

How to bind the SQLite database table as datasource in SfDataGrid

1 min read

The SfDataGrid is bound to an external data source to display the data. SfDataGrid.ItemsSource property helps to bind the SfDataGrid with the collection of objects. It supports all popular data sources such as List, Observable Collection, and so on. In addition it also allows you to bind data from an external database.

In case, if you wish to bind the data from a SQLite database table, SfDataGrid allows you to achieve the same using the SfDataGrid.ItemsSource property. To do it, you have to create a SQLite database table, populate the data and store them as an IEnumerable collection and bind it to SfDataGrid. Refer the following link to know how to work with local databases of SQLite in Xamarin.Forms.
http://developer.xamarin.com/guides/xamarin-forms/working-with/databases/

 

Refer the following code example which illustrates, how to create a SQLite database table and insert items in it.

OrderItem.cs

public class OrderItem
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Name { get; set; }
    public int TokenNo { get; set; }
    public string BillStatus { get; set; }
}

 

SampleDemoDatabase.cs

public class SampleDemoDatabase
{
  static object locker = new object ();
  SQLiteConnection database;              
public SampleDemoDatabase()
{
   database = DependencyService.Get<ISQLite> ().GetConnection ();
   // Creating the table
   database.CreateTable<OrderItem>();
   // Inserting items into table
   database.Query<OrderItem>("INSERT INTO OrderItem(ID,Name,TokenNo,BillStatus)
                                                    values (1001,'Patient01',1501,'PAID')");
   database.Query<OrderItem>("INSERT INTO OrderItem(ID,Name,TokenNo,BillStatus)
                                                    values (1002,'Patient02',1502,'NOT PAID')");
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1003,'Patient03',1503,'PAID')");
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1004,'Patient04',1504,'PAID')");
   
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1005,'Patient05',1505,'PAID')");       
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1006,'Patient06',1506,'NOT PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1007,'Patient07',1507,'NOT PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1008,'Patient08',1508,'PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1009,'Patient09',1509,'PAID')");       
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1010,'Patient10',1510,'PAID')");
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1011,'Patient11',1511,'NOT PAID')");     
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1012,'Patient12',1512,'NOT PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1013,'Patient13',1513,'PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1014,'Patient14',1514,'NOT PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1015,'Patient15',1515,'NOT PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1016,'Patient16',1516,'PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1017,'Patient17',1517,'PAID')");           
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1018,'Patient18',1518,'PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1019,'Patient19',1519,'PAID')");        
   database.Query<OrderItem>("INSERT INTO OrderItem (ID,Name,TokenNo,BillStatus)
                                                    values (1020,'Patient20',1520,'NOT PAID')");                      
}
public IEnumerable<OrderItem> GetItems ()
{
  lock (locker) 
  {                              
      var table = (from i in database.Table<OrderItem>() select i);
      return table;                                                                
   }
 }                                
}

 

Refer the following code example for binding the data from a SQLite Database to a SfDataGrid.

App.cs

public class App : Application
{    
  SfDataGrid sfGrid;
  public static SampleDemoDatabase database;
  public static SampleDemoDatabase Database
  {
      get
     {
         if (database == null)
             database = new SampleDemoDatabase();
         return database;
      }
  } 
public App()
 {                  
    sfGrid = new SfDataGrid();
    sfGrid.ItemsSource = Database.GetItems();            
    sfGrid.ColumnSizer= ColumnSizer.Star;
    // The root page of your application
    MainPage = new ContentPage
    {
       Content = sfGrid
     };
 }
}

 

Sample Link:

http://www.syncfusion.com/downloads/support/directtrac/general/ze/SampleDemo1593704577

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments
Please sign in to leave a comment
Access denied
Access denied