public override Task <string[]> ObjectListAsync(string connectionString, string prefixText, Guid objectType, Authentication auth, DatasourceProperties properties) { return(Task.FromResult(new string[0])); }
public override Task <bool> TestConnectionAsync(string connectionString, Authentication auth, DatasourceProperties properties) { return(Task.FromResult(true)); }
public override Task <DataTable> GetAvailableFilterFieldsAsync(string connectionString, Query query, Authentication auth, DatasourceProperties properties) { return(Task.FromResult(new DataTable())); }
public async override Task <IDataReader> GetDataReaderAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { return((await GetDataAsync(connectionString, query, criteria, auth, properties)).CreateDataReader()); }
public override Task <DataTable> GetSchemaAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { // Schema requires all of the available fields be returned in a flattened structure. All levels are added // as columns to the same DataTable. Nested field names must start with the same prefix as their parent column. var data = new DataTable(); data.Columns.Add("Column1", typeof(int)); data.Columns.Add("ColumnNested", typeof(DataTable)); // A nested parent column is identified as being of type DataTable data.Columns.Add("ColumnNested.ChildColumn", typeof(string)); return(Task.FromResult(data)); }
public override Task <DataTable> GetDataAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { // Data at the root level is constructed as normal. Only the fields relevant at this level are added. var data = new DataTable(); data.Columns.Add("Column1", typeof(int)); data.Columns.Add("ColumnNested", typeof(DataTable)); data.BeginLoadData(); for (int i = 1; i < 3; i++) { DataRow currentRow = data.NewRow(); currentRow["Column1"] = i; // Nested data is constructed as it's own DataTable and then inserted as the value of the // cell in the parent row. This is typically implemented as recursive function calls to handle // data at any level. var nestedData = new DataTable(); nestedData.Columns.Add("ColumnNested.ChildColumn", typeof(string)); DataRow currentNestedRow = nestedData.NewRow(); currentNestedRow["ColumnNested.ChildColumn"] = "SubValue" + i.ToString(); nestedData.Rows.Add(currentNestedRow); currentRow["ColumnNested"] = nestedData; data.Rows.Add(currentRow); } data.EndLoadData(); return(Task.FromResult(data)); }
public override Task <DataTable> GetSchemaAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { // Returns all the available columns/fields of the service at 'connectionString', for the resource in 'query' var data = new DataTable(); data.Columns.Add("Column1", typeof(int)); data.Columns.Add("Column2", typeof(string)); return(Task.FromResult(data)); }
public override Task <string[]> ObjectListAsync(string connectionString, string prefixText, Guid objectType, Authentication auth, DatasourceProperties properties) { // Return all the data objects in the service at 'connectionString', accessing the resource in 'query' // Filter the results to those whose names begin with 'prefixText' string[] availableObjects = { "SampleTable1", "SampleTable2" }; return(Task.FromResult(availableObjects.Where(s => s.StartsWith(prefixText, StringComparison.OrdinalIgnoreCase)).ToArray())); }
public override Task <DataTable> GetDataAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { // Main function of a data source that is called whenever a form needs data from the external service. // Connect to the service at 'connectionString', accessing the resource in 'query', matching the filters in 'criteria', using the credentials in 'auth' var data = new DataTable(); data.Columns.Add("Column1", typeof(int)); data.Columns.Add("Column2", typeof(string)); data.BeginLoadData(); DataRow currentRow = data.NewRow(); currentRow["Column1"] = 123; currentRow["Column2"] = "ABC"; data.Rows.Add(currentRow); data.EndLoadData(); return(Task.FromResult(data)); }
public async override Task <IDataReader> GetDataReaderAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { // This GetData call is used when repeating documents are being created. To support a large number of rows a streaming DataReader is requested. // If the service can't support that, create a DataReader wrapper from a DataTable. return((await GetDataAsync(connectionString, query, criteria, auth, properties)).CreateDataReader()); }
public override Task <DataTable> GetAvailableFilterFieldsAsync(string connectionString, Query query, Authentication auth, DatasourceProperties properties) { // Return all the things that designers can use to limit the result in a call to GetDataAsync. For data bases this is typically column names, for // web APIs - parameter names, etc. // Forms the basis of what can be passed in the 'criteria' parameter when getting data. var filterFields = new DataTable(); filterFields.Columns.Add("Filter1", typeof(int)); filterFields.Columns.Add("Filter2", typeof(string)); return(Task.FromResult(filterFields)); }
public override Task <bool> TestConnectionAsync(string connectionString, Authentication auth, DatasourceProperties properties) { // Test that a connection to the service in 'connectionString' can be made using the credentials in 'auth'; return(Task.FromResult(true)); }
public override Task <DataTable> GetSchemaAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { var data = new DataTable(); data.Columns.Add("Column1", typeof(string)); return(Task.FromResult(data)); }
public override Task <DataTable> GetDataAsync(string connectionString, Query query, DataFilter criteria, Authentication auth, DatasourceProperties properties) { var data = new DataTable(); data.Columns.Add("Column1", typeof(string)); data.BeginLoadData(); DataRow currentRow = data.NewRow(); currentRow["Column1"] = "ABC"; data.Rows.Add(currentRow); data.EndLoadData(); if (criteria != null) { BuildFilteringStatementRecursive(criteria); // Implementation Detail: Filter data with the filtering statement build from BuildFilteringStatementRecursive } return(Task.FromResult(data)); }
public override Task <DataTable> GetAvailableFilterFieldsAsync(string connectionString, Query query, Authentication auth, DatasourceProperties properties) { var filterFields = new DataTable(); filterFields.Columns.Add("Column1", typeof(string)); return(Task.FromResult(filterFields)); }