I apologize....mutex?I have it almost working where my initial search_executecompleted then calls search2, however within each I have "ParcelSearch_TaskResultsDataGrid.ItemsSource = featureSet.Features;" which the 2nd is overwriting the 1st.I have read that pushing my features to a collection then to the datagrid may work, I just am unable to find some reference or code for "collection".Here is my full code:
private void Execute_ParcelSearch_Click(object sender, RoutedEventArgs e)
{
GraphicsLayer ParcelSearch_GraphicsLayer = MyMap.Layers["ParcelSearch_GraphicsLayer"] as GraphicsLayer;
ParcelSearch_GraphicsLayer.ClearGraphics();
ParcelSearch_TaskResultsDataGrid.ItemsSource = null;
ParcelSearch_TaskResultsPanel.Visibility = Visibility.Collapsed;
if (ParcelSearch_tabControl != null)
{
TabControl tb = ParcelSearch_tabControl as TabControl; if (tb.SelectedIndex > -1)
{
ParcelSearch_tab = (tb.SelectedItem as TabItem).Name;
}
if (ParcelSearch_tab == "ParcelSearch_tabAPN" && (txtAPN.Text.Length < 4 || txtStNumber.Text == null))
{
MessageBox.Show("You must enter atleast 4 numbers");
}
else
{
QueryTask ParcelSearch = new QueryTask("http://{SERVER}/ArcGIS/rest/services/GISPRD_Main/MapServer/79");
ParcelSearch.ExecuteCompleted += ParcelSearch_ExecuteCompleted;
ParcelSearch.Failed += ParcelSearch_Failed;
Query query = new Query();
query.ReturnGeometry = true;
query.OutSpatialReference = MyMap.SpatialReference;
query.OutFields.Add("*");
if (ParcelSearch_tab == "ParcelSearch_tabAPN")
{
query.Where = "APN LIKE '" + txtAPN.Text + "%'";
}
else if (ParcelSearch_tab == "ParcelSearch_tabAddr")
{
query.Where = "STNUMBER LIKE '" + txtStNumber.Text + "%' AND STNAME LIKE '" + txtStName.Text + "%' AND STSUFFIX LIKE '" + txtStSuffix.Text + "%'";
}
ParcelSearch.ExecuteAsync(query);
//ParcelSearch_TaskResultsPanel.Visibility = Visibility.Visible;
}
}
else
{
MessageBox.Show("You must specify an APN, Address, or Owner to search for");
}
}
private void ParcelSearch2(object sender, RoutedEventArgs e)
{
GraphicsLayer ParcelSearch_GraphicsLayer = MyMap.Layers["ParcelSearch_GraphicsLayer"] as GraphicsLayer;
if (ParcelSearch_tabControl != null)
{
TabControl tb = ParcelSearch_tabControl as TabControl; if (tb.SelectedIndex > -1)
{
ParcelSearch_tab = (tb.SelectedItem as TabItem).Name;
}
if (ParcelSearch_tab == "ParcelSearch_tabAPN" && (txtAPN.Text.Length < 4 || txtStNumber.Text == null))
{
MessageBox.Show("You must enter atleast 4 numbers");
}
else
{
QueryTask ParcelSearch2 = new QueryTask("http://{SERVER}/ArcGIS/rest/services/GISPRD_Main/MapServer/80");
ParcelSearch2.ExecuteCompleted += ParcelSearch2_ExecuteCompleted;
ParcelSearch2.Failed += ParcelSearch2_Failed;
Query query = new Query();
query.ReturnGeometry = true;
query.OutSpatialReference = MyMap.SpatialReference;
query.OutFields.Add("*");
if (ParcelSearch_tab == "ParcelSearch_tabAPN")
{
query.Where = "APN LIKE '" + txtAPN.Text + "%'";
}
else if (ParcelSearch_tab == "ParcelSearch_tabAddr")
{
query.Where = "STNUMBER LIKE '" + txtStNumber.Text + "%' AND STNAME LIKE '" + txtStName.Text + "%' AND STSUFFIX LIKE '" + txtStSuffix.Text + "%'";
}
ParcelSearch2.ExecuteAsync(query);
//ParcelSearch_TaskResultsPanel.Visibility = Visibility.Visible;
}
}
else
{
MessageBox.Show("You must specify an APN, Address, or Owner to search for");
}
}
private void ParcelSearch_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
GraphicsLayer ParcelSearch_GraphicsLayer = MyMap.Layers["ParcelSearch_GraphicsLayer"] as GraphicsLayer;
ParcelSearch_GraphicsLayer.ClearGraphics();
FeatureSet featureSet = args.FeatureSet;
if (featureSet.Features.Count > 0)
{
ParcelSearch_TaskResultsDataGrid.ItemsSource = featureSet.Features;
foreach (Graphic resultFeature in featureSet.Features)
{
resultFeature.Symbol = DefaultFillSymbol;
ParcelSearch_GraphicsLayer.Graphics.Add(resultFeature);
}
}
else
{
//MessageBox.Show("No features found");
}
ParcelSearch2(sender, null);
}
private void ParcelSearch2_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
GraphicsLayer ParcelSearch_GraphicsLayer = MyMap.Layers["ParcelSearch_GraphicsLayer"] as GraphicsLayer;
FeatureSet featureSet = args.FeatureSet;
if (featureSet.Features.Count > 0)
{
ParcelSearch_TaskResultsDataGrid.ItemsSource = featureSet.Features;
// Add results to map
foreach (Graphic resultFeature in featureSet.Features)
{
resultFeature.Symbol = DefaultFillSymbol;
ParcelSearch_GraphicsLayer.Graphics.Add(resultFeature);
}
}
else
{
//MessageBox.Show("No features found");
}
ZoomToGraphicsLayer(MyMap.Layers["ParcelSearch_GraphicsLayer"] as GraphicsLayer);
ParcelSearch_TaskResultsPanel.Visibility = Visibility.Visible;
}
private void ParcelSearch_TaskResultsDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Highlight the graphic feature associated with the selected rows
DataGrid dataGrid = sender as DataGrid;
int selectedIndex = dataGrid.SelectedIndex;
if (selectedIndex > -1)
{
GraphicsLayer ParcelSearch_GraphicsLayer = MyMap.Layers["ParcelSearch_GraphicsLayer"] as GraphicsLayer;
ParcelSearch_GraphicsLayer.ClearGraphics();
foreach (Graphic resultFeature in ParcelSearch_TaskResultsDataGrid.SelectedItems)
{
resultFeature.Symbol = DefaultFillSymbol;
ParcelSearch_GraphicsLayer.Graphics.Add(resultFeature);
}
}
}