<%@ Page language="c#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="OSGeo.MapGuide" %>
<!-- #Include File="utilityfunctions.aspx" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<%
string mgSessionId = GetParameters()["SESSION"];
string mgDataSourceLoc = "Library://OkaloosaGas/Data/Cycles.FeatureSource";
string mgDataSourceObj = "Cycles";
string mgDataSourceGeom = "Geom";
string appTitle = "Search Template Thingy";
string appZoomScale = "65000";
HybridDictionary SearchColumns = new HybridDictionary();
SearchColumns.Add("county", "County Number");
SearchColumns.Add("cycle", "Cycle Number");
SearchColumns.Add("PRIMARYINDEX", "Index Number");
HybridDictionary DisplayColumns = new HybridDictionary();
DisplayColumns.Add("county", "County Number");
DisplayColumns.Add("cycle", "Cycle Number");
DisplayColumns.Add("PRIMARYINDEX", "Index Number");
%>
<html>
<head>
<title><%= appTitle %></title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />
<link href="styles/globalstyles.css" rel="stylesheet" type="text/css">
<link href="styles/alphastyles.css" rel="stylesheet" type="text/css">
<link href="/mapguide/viewerfiles/viewer.css" rel="stylesheet"type="text/css">
</head>
<body class="AppFrame">
<h1 class="AppHeading"><%= appTitle %></h1>
<form action="<%= Context.Request.CurrentExecutionFilePath.ToString()%>" method="get" target="_self">
<input name="SESSION" type="hidden" value="<%= mgSessionId %>">
<%
foreach (DictionaryEntry SearchColumn in SearchColumns)
{
Response.Write("<label>" + SearchColumn.Value + "</label>");
Response.Write("<input name=\"" + SearchColumn.Key + "\"type=\"text\" size=\"30\" value=\"" + GetParameters()[SearchColumn.Key.ToString()] + "\"><br/>");
}
%>
<input type="submit" value="Find">
</form>
<hr>
<%
HybridDictionary SearchValues = new HybridDictionary();
foreach (DictionaryEntry SearchColumn in SearchColumns)
{
string tmpKey = SearchColumn.Key.ToString();
string tmpParam = GetParameters()[tmpKey];
if(tmpParam != null)
SearchValues.Add(tmpKey, tmpParam);
}
if(SearchValues.Count == 0)
{
Response.Write("Please enter something to search");
}
else
{
try
{
InitializeWebTier();
MgUserInformation userInfo = new MgUserInformation(mgSessionId);
MgSiteConnection siteConnection = new MgSiteConnection();
siteConnection.Open(userInfo);
MgFeatureService featureService = siteConnection.CreateService(MgServiceType.FeatureService) asMgFeatureService;
MgResourceIdentifier resId = new MgResourceIdentifier(mgDataSourceLoc);
string filter = "";
foreach (DictionaryEntry Search in SearchValues)
{
if(Search.Value.ToString().Length != 0)
{
if(filter.Length > 0)
filter += " AND ";
filter += Search.Key + " LIKE '%" + Search.Value + "%' ";
}
}
MgFeatureQueryOptions queryOptions = new MgFeatureQueryOptions();
queryOptions.SetFilter(filter);
MgFeatureReader featureReader = featureService.SelectFeatures(resId, mgDataSourceObj, queryOptions);
MgAgfReaderWriter geometryReaderWriter = new MgAgfReaderWriter();
Response.Write("<table width=\"100%\"><tr>");
foreach (DictionaryEntry ColName in DisplayColumns)
Response.Write("<td>" + ColName.Value + "</td>");
Response.Write("</tr>");
int NumResults = 0;
while (featureReader.ReadNext() && ++NumResults > 0)
{
MgByteReader byteReader = featureReader.GetGeometry(mgDataSourceGeom);
MgGeometry geometry = geometryReaderWriter.Read(byteReader);
MgPoint point = geometry.GetCentroid();
double x = point.GetCoordinate().GetX();
double y = point.GetCoordinate().GetY();
Response.Write("<tr>");
int i = 0;
foreach (DictionaryEntry DisplayCol in DisplayColumns)
{
string ColName = DisplayCol.Key.ToString();
int DataType = featureReader.GetPropertyType(ColName);
string tmpData = "";
if(DataType == MgPropertyType.String)
tmpData = featureReader.GetString(ColName);
else if(DataType == MgPropertyType.Int32)
tmpData = featureReader.GetInt32(ColName).ToString();
if(i++ == 0)
Response.Write("<td><a href=gotopoint.aspx?X="+x+"&Y="+y+"&Scale=" + appZoomScale + " target=\"scriptFrame\">" + tmpData + "</a></td>");
else
Response.Write("<td>" + tmpData + "</td>");
}
Response.Write("</tr>");
}
Response.Write("</table><hr>This query returned " + NumResults + " results");
}
catch (MgException mge)
{
Response.Write(mge.GetMessage() + "<br>");
Response.Write(mge.GetDetails());
}
}
%>
</body>
</html>