[mapguide-users] Trying to create an ajax search thingo
Jackie Ng
jumpinjackie at gmail.com
Mon Apr 27 23:20:17 EDT 2009
Perhaps you may have used the wrong MgSelection constructor? The API docs
says that MgSelection() is a dummy constructor.
- Jackie
Jamo wrote:
>
> I'm trying to populate an Ajax TabContainer with a tab for each search.
>
> I'm getting an error for line 94: "The map definition is invalid. "
>
> foreach (MgLayer cLayer in cadFeatures.GetLayers())
>
> Is it best to store the information needed for each search in a
> MgSelection or would it be better to extract information needed to a
> DataTable? I'm trying to make it as flexible as possible..... hopefully
> adding some other search type other than just DropDownList.
>
> At the moment this runs seperate to mapguide and does not interact with
> the map itself (just for testing at the moment).
>
> -------------
> Default.aspx
> --------------
> <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
> Inherits="Searchtool_Default" %>
>
> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"
> TagPrefix="cc1" %>
> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0,
> Culture=neutral, PublicKeyToken=31bf3856ad364e35"
> Namespace="System.Web.UI" TagPrefix="asp" %>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head runat="server">
> <title>Untitled Page</title>
> </head>
> <body>
> <form id="form1" runat="server">
> <asp:ScriptManager ID="ScriptManager1" runat="server">
> </asp:ScriptManager>
> <div>
> <cc1:TabContainer ID="SearchContainer" runat="server"
> ActiveTabIndex="0" >
> <cc1:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel1"
> Visible="False">
> </cc1:TabPanel>
> </cc1:TabContainer>
> </div>
> </form>
> </body>
> </html>
>
> -------------------
> Default.aspx.cs
> -------------------
> using System;
> using System.Collections.Specialized;
> using System.Text;
> using System.Globalization;
> using OSGeo.MapGuide;
> using System.Web;
> using System.Data;
> using System.Collections;
> using System.Web.UI.WebControls;
> using System.Web.UI;
>
> public partial class Searchtool_Default : System.Web.UI.Page
> {
> //define all selections for searches here
> internal static MgSelection cadFeatures;
> internal static MgSelectionBase geoFeatures;
>
> //get selection ready for searching on
> protected MgSelection createSelectionMaster(String[] Layers)
> {
>
> MapGuideApi.MgInitializeWebTier(Request.ServerVariables["APPL_PHYSICAL_PATH"]
> + "../webconfig.ini");
> MgUserInformation userInfo = new MgUserInformation("Anonymous", "");
> MgSite site = new MgSite();
> //connect to site
> site.Open(userInfo);
> String sessionId = site.CreateSession();
> MgSiteConnection siteConnection = new MgSiteConnection();
> //open site connection
> siteConnection.Open(userInfo);
> MgResourceService ResourceService =
> siteConnection.CreateService(MgServiceType.ResourceService) as
> MgResourceService;
> MgFeatureService FeatureService =
> siteConnection.CreateService(MgServiceType.FeatureService) as
> MgFeatureService;
> MgResourceIdentifier mgResourceID = new
> MgResourceIdentifier("Library://Production/PortBris/Maps/PortBris.MapDefinition");
> MgMap map = new MgMap();
> map.Create(ResourceService, mgResourceID, "PortBris");
>
> MgSelection thisSel = new MgSelection();
> foreach (String layer in Layers)
> {
> MgLayer cLayer = map.GetLayers().GetItem(layer) as MgLayer;
> string layerClassName = cLayer.GetFeatureClassName();
> string selectionString = thisSel.GenerateFilter(cLayer,
> layerClassName);
> string layerFeatureId = cLayer.GetFeatureSourceId();
> MgResourceIdentifier layerFeatureResource = new
> MgResourceIdentifier(layerFeatureId);
> MgFeatureQueryOptions queryOptions = new MgFeatureQueryOptions();
> queryOptions.SetFilter(selectionString);
> MgFeatureReader cFeatReader =
> FeatureService.SelectFeatures(layerFeatureResource, layerClassName,
> queryOptions);
> thisSel.AddFeatures(cLayer as MgLayerBase, cFeatReader, -1);
> }
> return thisSel;
> }
>
> //return an array
> protected String[] StringArray(String CommaSeperatedLayers)
> {
> return CommaSeperatedLayers.Split(",".ToCharArray());
> }
> //add a DDL search type to the TabContainer
> //ToDo: add list search capabilities and filtering
> protected DropDownList addSearchDDL(Control controlToAddTo, String
> searchDDLId, String labelText)
> {
> Label cLabel = new Label();
> cLabel.Text = labelText;
> controlToAddTo.Controls.Add(cLabel);
>
> DropDownList cDDL = new DropDownList();
> cDDL.ID = searchDDLId;
> controlToAddTo.Controls.Add(cDDL);
> return cDDL;
> }
> //add a new Tab to the Ajax TabContainer
> //each tab is a different search type
> protected AjaxControlToolkit.TabPanel
> AddTab(AjaxControlToolkit.TabContainer TabCont, String TabID, String
> Header)
> {
> AjaxControlToolkit.TabPanel newTab = new
> AjaxControlToolkit.TabPanel();
> newTab.ID = TabID;
> newTab.HeaderText = Header;
> TabCont.Tabs.Add(newTab);
> TabCont.TabIndex = 1;
>
> return newTab;
> }
> //init all search engines
> //ToDo: Add more searches
> //ToDo: Add Primary Search properties
> //ToDo: Add Advanced Search properties
>
> protected void Page_Load(object sender, EventArgs e)
> {
> //add tab for search
> AjaxControlToolkit.TabPanel cadSearch =
> AddTab(SearchContainer,"cadSearch","Cadastre");
> //assign all cadastre features to the cadastre selection set.
> cadFeatures = createSelectionMaster(StringArray("cadFREE,cadPPLE"));
> //find if control with ID already exists on this tabPanel.
> foreach (MgLayer cLayer in cadFeatures.GetLayers())
> {
> //write out each Properties search Drop down List
> foreach (MgPropertyDefinition cPropDef in
> cLayer.GetClassDefinition().GetProperties())
> {
> if (cadSearch.Controls.Contains(addSearchDDL(cadSearch,
> cPropDef.Name, cPropDef.Description)))
> Response.Write("control added already");
> }
> //MgFeatureReader cFeatReader =
> cadSearchResults.GetSelectedFeatures(cLayer as MgLayerBase,
> cLayer.GetClassName(),true)
> //while(cFeatReader.ReadNext())
> //{
> // int cPropCount =
> cFeatReader.GetClassDefinition().GetProperties().Count;
> //}
> }
> }
> }
>
>
>
--
View this message in context: http://n2.nabble.com/Trying-to-create-an-ajax-search-thingo-tp2729762p2729895.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list