Skip to content

Commit 3a120a5

Browse files
committed
add $select support to data source.
1 parent 696ec71 commit 3a120a5

3 files changed

Lines changed: 45 additions & 3 deletions

File tree

DataSource.DataProviders.OData/ODataSampleApp/MainWindow.xaml.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,17 @@ public MainWindow()
3434
};
3535

3636
source.SortDescriptions.Add(new DataSourceSortDescription("OrderID", true));
37-
source.FilterExpressions.Add(DataSourceFilterExpression.CreateSimpleOperation(
38-
"ShipName", DataSourceExpressionOperatorType.Equal, "Wartian Herkku"));
37+
//source.FilterExpressions.Add(DataSourceFilterExpression.CreateSimpleOperation(
38+
// "ShipName", DataSourceExpressionOperatorType.Equal, "Wartian Herkku"));
39+
40+
//Task.Delay(8000).ContinueWith((t) =>
41+
//{
42+
// Dispatcher.BeginInvoke(new Action(() =>
43+
// {
44+
// grid1.SortDescriptions.Clear();
45+
// grid1.SortDescriptions.Add(new DataSourceSortDescription("OrderID", false));
46+
// }));
47+
//});
3948

4049
grid1.ItemsSource = source;
4150
}

ODataDataProvider/ODataVirtualDataSourceDataProvider.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ private ODataVirtualDataSourceDataProviderWorkerSettings GetWorkerSettings()
103103
PageLoaded = _callback,
104104
ExecutionContext = _executionContext,
105105
SortDescriptions = _sortDescriptions,
106-
FilterExpressions = _filterExpressions
106+
FilterExpressions = _filterExpressions,
107+
DesiredProperties = _desiredProperties
107108
};
108109
}
109110

@@ -337,6 +338,20 @@ public DataSourceSortDescriptionCollection SortDescriptions
337338
}
338339
}
339340

341+
private string[] _desiredProperties;
342+
public string[] DesiredProperties
343+
{
344+
get
345+
{
346+
return _desiredProperties;
347+
}
348+
set
349+
{
350+
_desiredProperties = value;
351+
QueueAutoRefresh();
352+
}
353+
}
354+
340355
private DataSourceFilterExpressionCollection _filterExpressions;
341356
public DataSourceFilterExpressionCollection FilterExpressions
342357
{

ODataDataProvider/ODataVirtualDataSourceDataProviderWorker.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ internal class ODataVirtualDataSourceDataProviderWorkerSettings
2424
public DataSourceSortDescriptionCollection SortDescriptions { get; set; }
2525

2626
public DataSourceFilterExpressionCollection FilterExpressions { get; set; }
27+
28+
public string[] DesiredProperties { get; set; }
2729
}
2830

2931

@@ -45,6 +47,7 @@ internal class ODataVirtualDataSourceDataProviderWorker
4547
private string _entitySet;
4648
private DataSourceSortDescriptionCollection _sortDescriptions;
4749
private DataSourceFilterExpressionCollection _filterExpressions;
50+
private string[] _desiredPropeties;
4851

4952
protected DataSourceSortDescriptionCollection SortDescriptions
5053
{
@@ -62,6 +65,14 @@ protected DataSourceFilterExpressionCollection FilterExpressions
6265
}
6366
}
6467

68+
protected string[] DesiredProperties
69+
{
70+
get
71+
{
72+
return _desiredPropeties;
73+
}
74+
}
75+
6576
private List<ODataFeedAnnotations> _annotations =
6677
new List<ODataFeedAnnotations>();
6778

@@ -112,6 +123,7 @@ public ODataVirtualDataSourceDataProviderWorker(ODataVirtualDataSourceDataProvid
112123
_entitySet = settings.EntitySet;
113124
_sortDescriptions = settings.SortDescriptions;
114125
_filterExpressions = settings.FilterExpressions;
126+
_desiredPropeties = settings.DesiredProperties;
115127
Task.Factory.StartNew(() => DoWork(), TaskCreationOptions.LongRunning);
116128
}
117129

@@ -228,6 +240,7 @@ private IDataSourceSchema ResolveSchema(IDictionary<string, object> item)
228240
}
229241

230242
private string _filterString = null;
243+
private string _selectedString = null;
231244

232245
protected override void MakeTaskForRequest(AsyncDataSourcePageRequest request, int retryDelay)
233246
{
@@ -295,6 +308,11 @@ protected override void MakeTaskForRequest(AsyncDataSourcePageRequest request, i
295308
}
296309
}
297310
}
311+
312+
if (DesiredProperties != null && DesiredProperties.Length > 0)
313+
{
314+
client = client.Select(DesiredProperties);
315+
}
298316
}
299317

300318
Task<IEnumerable<IDictionary<string, object>>> task = client

0 commit comments

Comments
 (0)