Select to view content in your preferred language

DataPager not working when binding to silverlight datagrid with URL ArcGIS service!

1258
4
12-11-2011 05:20 AM
AnhTruong
Emerging Contributor
Hello,

I searched for paging solution in ArcGIS for Silverlight dataGrid and could not find out the solution???
In my dataPager, I can see how many pages but when I navigate using next, previous the data not display by page size.

Here are my codes as following:

MainPage.xaml

<sdkataPager x:Name="SCHPager" Grid.Column="1" Grid.Row="1" VerticalAlignment="Bottom" Background="#FF333333" Foreground="#FFE5E5E5" BorderBrush="Black" Source ="{Binding Path = ItemsSource, ElementName=QueryDetailsDataGrid}" PageSize="30" />

MainPage.xaml.cs

QueryTask queryTask = new QueryTask("http://egis/ArcGIS/rest/services/SCH/MapServer/0");
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
queryTask.Failed += QueryTask_Failed;

ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.Text = TaskNumberTextBox.Text;
query.OutFields.Add("*");
query.Where = "1=1";
queryTask.ExecuteAsync(query);

QueryDetailsDataGrid.ItemsSource = new PagedCollectionView("http://egis/ArcGIS/rest/services/SCH/MapServer/0");
SCHPager.Source = QueryDetailsDataGrid.ItemsSource;

Anything extra code in my code behind? I am newbie to ArcGIS API for silverlight, so I really need your expertise to make it happen. Thanks in advance.
0 Kudos
4 Replies
JenniferNery
Esri Regular Contributor
To enable paging in your data grid, you need to use PagedCollectionView. You cannot create an instance of PagedCollectionView by passing service url. You need to pass the results of your Query. http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#QueryWithoutMap.

PagedCollectionView pagedCollectionView;
void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args)
{
 pagedCollectionView = new PagedCollectionView(args.FeatureSet);
}
0 Kudos
AnhTruong
Emerging Contributor
Here are my detailed code after changes as following:

MainPage.xaml.cs

private void LoadData()
{

QueryTask queryTask = new QueryTask(URLService);
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
queryTask.Failed += QueryTask_Failed;

ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.Add("*");
query.Where = "1=1";
queryTask.ExecuteAsync(query);

// How do you make changes for two following lines???
QueryDetailsDataGrid.ItemsSource = new PagedCollectionView("http://egis/ArcGIS/rest/services/SCH/MapServer/0");
SCHPager.Source = QueryDetailsDataGrid.ItemsSource;

}

void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
pagedCollectionView = new PagedCollectionView(args.FeatureSet);

if (featureSet != null && featureSet.Features.Count > 0)
QueryDetailsDataGrid.ItemsSource = featureSet.Features;
else
MessageBox.Show("No features returned from query");
}

MainPage.xaml

<sdk:DataPager x:Name="SCHPager" Grid.Column="1" Grid.Row="1" Source ="{Binding Path = ItemsSource, ElementName=QueryDetailsDataGrid}" PageSize="30" />

==========================================================================

I added new code to QueryTask_ExecuteCompleted(object sender, QueryEventArgs args) but nothing seems to be working at all. Please double check it. Thanks.
0 Kudos
DominiqueBroux
Esri Frequent Contributor

void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
pagedCollectionView = new PagedCollectionView(args.FeatureSet);

if (featureSet != null && featureSet.Features.Count > 0)
QueryDetailsDataGrid.ItemsSource = featureSet.Features;
else
MessageBox.Show("No features returned from query");
}



should be:
 
void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
pagedCollectionView = new PagedCollectionView(args.FeatureSet);

if (featureSet != null && featureSet.Features.Count > 0)
QueryDetailsDataGrid.ItemsSource = pagedCollectionView ;
else
MessageBox.Show("No features returned from query");
}

0 Kudos
AnhTruong
Emerging Contributor
You're super code. Thanks again.


should be:
 
void QueryTask_ExecuteCompleted(object sender, QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
pagedCollectionView = new PagedCollectionView(args.FeatureSet);

if (featureSet != null && featureSet.Features.Count > 0)
QueryDetailsDataGrid.ItemsSource = pagedCollectionView ;
else
MessageBox.Show("No features returned from query");
}

0 Kudos