Так, после долгого блуждания и поисков на форуме ESRI напоролась на вот эту тему:
Код Lynn Hey protected void Page_PreRender(object sender, EventArgs e) показался мне подходящим, но когда я пытаюсь его применить ничего не получается.
Прежде всего, я не девелопер. Вообще.
Девелопер уволился, а мне пришлось взять на себя его функции, и если по мелочи я справляюсь, то тут не получается вообще. :(
Вот код:
protected void Page_PreRender(object sender, EventArgs e)
{
string[] values = queryvalues.GetValues("Name");
if ((values != null) && (values.Length > 0))
{
string strName = values[0];
strName = strName.Substring(0, strName.Length - 1);
IEnumerable func_enum = Map1.GetFunctionalities();
foreach (ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality gisfunctionality in func_enum)
{
ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisresource = gisfunctionality.Resource;
bool supported = gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));
if (supported)
{
ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc;
qfunc = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisresource.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);
string[] lids;
string[] lnames;
qfunc.GetQueryableLayers(null, out lids, out lnames);
ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new ESRI.ArcGIS.ADF.Web.SpatialFilter();
spatialfilter.ReturnADFGeometries = true;
spatialfilter.MaxRecords = 1000;
spatialfilter.WhereClause = "GIS.CITY.NAME = '" + strName + "'";
//default env - countywide
ESRI.ArcGIS.ADF.Web.Geometry.Envelope env = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(2800000, 1327000, 3170000, 1618000);
spatialfilter.Geometry = env;
Map1.Extent = env;
Map1.Refresh();
Int32 intCount = 0;
foreach (object o in lnames)
{
Debug.WriteLine(lids[intCount]);
Debug.WriteLine(lnames[intCount]);
if (o.Equals("Cities"))
{
System.Data.DataTable datatable = qfunc.Query(null, lids[intCount], spatialfilter);
ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicsLayer graphicslayer = ESRI.ArcGIS.ADF.Web.Converter.ToGraphicsLayer(datatable, System.Drawing.Color.Yellow, System.Drawing.Color.Green);
env = graphicslayer.FullExtent;
Map1.Extent = env.Expand(15.0);
Map1.Refresh();
}
intCount = intCount + 1;
}
}
}
}
}
Когда я, пользуясь подсказками с форума и со странички, ссылку на которую дал Alexander, попыталась код внедрить, получилась, естесственно, полная ерунда.
В окне выскочило следующее сообщение:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0122: 'System.Configuration.Debug' is inaccessible due to its protection level
Source Error:
Line 465: {
Line 466:
Line 467: Debug.WriteLine(lids[intCount]);
Line 468: Debug.WriteLine(lnames[intCount]);
Line 469:
Source File: e:\Inetpub\ArcGIS\web\city\Default.aspx.cs Line: 467
Глупый вопрос, понимаю, но - что не так?