コード例 #1
0
 public override Task <string[]> ObjectListAsync(string connectionString, string prefixText, Guid objectType, Authentication auth, DatasourceProperties properties)
 {
     return(Task.FromResult(new string[0]));
 }
コード例 #2
0
 public override Task <bool> TestConnectionAsync(string connectionString, Authentication auth, DatasourceProperties properties)
 {
     return(Task.FromResult(true));
 }
コード例 #3
0
 public override Task <DataTable> GetAvailableFilterFieldsAsync(string connectionString, Query query, Authentication auth, DatasourceProperties properties)
 {
     return(Task.FromResult(new DataTable()));
 }
コード例 #4
0
 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());
 }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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()));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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());
        }
コード例 #11
0
        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));
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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));
        }
コード例 #14
0
        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));
        }
コード例 #15
0
        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));
        }