My map application has ability to do different queries on different layers. I have one button to create query on selected layer and other one to clear query results. For all layers but one Clear button works fine. If I query PED layer and press Clear after this, it gives me an error:
Invalid Operation Exception was unhandled by user code. URL is not set.
pointing out to the following line of code:
queryTask.ExecuteAsync(query);
If I query different layer ??? for example Street and press Clear button, I can query again Streets, but not PED (I receive the same error like above). If I query PED and use Delete button from keyboard to delete entered value, I can query new value without any problem. It looks like Clear button permanently disables my query on PED layer and I have no idea why.
Bellow is corresponding code. Any ideas highly appreciated
private void CreateQuery()
{
//varibles to use in case
string strQueryTaskURL = "";
string strQueryWhereClause = "";
switch (_strLayerQuery)
{
case "PED":
if (InputPED.Text.StartsWith("01") || InputPED.Text.StartsWith("02"))
{
strQueryTaskURL = _strPEDmnQueryService;
}
else if (InputPED.Text.StartsWith("07") || InputPED.Text.StartsWith("08???))
{
strQueryTaskURL = _strPEDbxQueryService;
}
strQueryWhereClause = "S_" + InputPED.Text + " = 'A' OR S_" + InputPED.Text + " = 'B'OR S_" + InputPED.Text + " = 'C'";
break;
case "Street":
strQueryTaskURL = _strStreetQueryService;
strQueryWhereClause = "Street LIKE '%" + InputStreetLion.Text + "%'";
break;
}
ESRI.ArcGIS.Client.Tasks.QueryTask queryTask = new QueryTask(strQueryTaskURL);
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
queryTask.Failed += QueryTask_Failed;
ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.ReturnGeometry = true;
query.OutFields.Add("*");
query.Where = strQueryWhereClause;
queryTask.ExecuteAsync(query);
}
private void PEDClearButton_Click(object sender, RoutedEventArgs e)
{
//clear PED textbox
InputPED.Text = " ";
// Clear previous results
GraphicsLayer graphicsLayer = Map.Layers["PEDGraphicsLayer"] as GraphicsLayer;
graphicsLayer.ClearGraphics();
}
private void StreetClearButton_Click(object sender, RoutedEventArgs e)
{
//clear the data grid
StreetQueryNewDataGrid.ItemsSource = null;
StreetQueryResultPanelGrid.Visibility = Visibility.Collapsed;
//clear search text box
InputStreetLion.Text = "";
// Clear previous results
GraphicsLayer graphicsLayer = Map.Layers["LionGraphicsLayer"] as GraphicsLayer;
graphicsLayer.ClearGraphics();
}