You can modify the following SDK sample: http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#ToolkitFeatureDataGridIf your ComboBox contains the query string, you can translate this to Linq query and set FeatureDataGrid.FilterSource property. Add in the XAML:
<ComboBox x:Name="Filter" SelectionChanged="Filter_SelectionChanged" VerticalAlignment="Top" HorizontalAlignment="Center">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Add in Code-behind ( be sure you have using System.Linq; 😞
//After InitializeComponent
Filter.ItemsSource = new string[]
{
"1 = 1",
"status = 1",
"req_type = 'Graffiti Complaint - Public Property'",
"status = 1 and req_type = 'Graffiti Complaint - Public Property'"
};
private void Filter_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var query = Filter.SelectedItem as string;
var l = MyMap.Layers["IncidentsLayer"] as FeatureLayer;
if(query == "1 = 1")
MyDataGrid.FilterSource = null;
else if (query == "status = 1")
{
MyDataGrid.FilterSource = (from g in l.Graphics
where (Int16)g.Attributes["status"] == 1
select g).ToList();
}
else if (query == "req_type = 'Graffiti Complaint - Public Property'")
{
MyDataGrid.FilterSource = (from g in l.Graphics
where (string)g.Attributes["req_type"] == "Graffiti Complaint - Public Property"
select g).ToList();
}
else if (query == "status = 1 and req_type = 'Graffiti Complaint - Public Property'")
{
MyDataGrid.FilterSource = (from g in l.Graphics
where (Int16)g.Attributes["status"] == 1 && (string)g.Attributes["req_type"] == "Graffiti Complaint - Public Property"
select g).ToList();
}
}