Hello

I used listselection.aspx
(http://trac.osgeo.org/mapguide/browser/trunk/MgDev/Doc/samples/dotnetsamples/working_with_feature_data/listselection.aspx)
as a base to get selected data from my map points

I changed it a bit adding the output style of search.aspx (I mean, getting
the xml of the point in order to use the CellClicked javascript function to
zoom into a certain result)

My problem is I have points with 68 properties and takes forever listing the
features (the end user expects to select 500-2000 features at a time)

This is part of my code:


do
{
        Response.Write("
");
        for (int k = 0; k < colCount; k++)
        {
                String prop = (String)propNames[k];
                int propType = featureReader.GetPropertyType(prop);
                if (!featureReader.IsNull(prop))
                {
                        switch (propType)
                        {
                                case MgPropertyType.Boolean:
                                        val = featureReader.GetBoolean(prop) ? 
"True" : "False";
                                        break;
                                case MgPropertyType.Single:
                                        val = 
featureReader.GetSingle(prop).ToString();
                                        break;
                                case MgPropertyType.Double:
                                        val = 
featureReader.GetDouble(prop).ToString();
                                        break;
                                case MgPropertyType.Int16:
                                        val = 
featureReader.GetInt16(prop).ToString();
                                        break;
                                case MgPropertyType.Int32:
                                        val = 
featureReader.GetInt32(prop).ToString();
                                        break;
                                case MgPropertyType.Int64:
                                        val = 
featureReader.GetInt64(prop).ToString();
                                        break;
                                case MgPropertyType.String:
                                        val = featureReader.GetString(prop);
                                        break;
                                case MgPropertyType.DateTime:
                                        val = 
featureReader.GetDateTime(prop).ToString();
                                        break;
                        }
                }

                // Generate XML to selection this feature
                //
                MgSelection sel = new MgSelection(map);
                MgPropertyCollection idProps = new MgPropertyCollection();
                foreach (string id in propNames)
                {
                        idPropType = featureReader.GetPropertyType(id);
                        Boolean isNull = featureReader.IsNull(id);
                        switch (idPropType)
                        {
                                case MgPropertyType.Int32:
                                        idProps.Add(new MgInt32Property(id, 
isNull ? -1 :
featureReader.GetInt32(id)));
                                        break;
                                case MgPropertyType.String:
                                        idProps.Add(new MgStringProperty(id, 
isNull ? "null" :
featureReader.GetString(id)));
                                        break;
                                case MgPropertyType.Int64:
                                        idProps.Add(new MgInt64Property(id, 
isNull ? -1 :
featureReader.GetInt64(id)));
                                        break;
                                case MgPropertyType.Double:
                                        idProps.Add(new MgDoubleProperty(id, 
isNull ? 0.0 :
featureReader.GetDouble(id)));
                                        break;
                                case MgPropertyType.Single:
                                        idProps.Add(new MgSingleProperty(id, 
isNull ? 0.0F :
featureReader.GetSingle(id)));
                                        break;
                                case MgPropertyType.DateTime:
                                        idProps.Add(new MgDateTimeProperty(id, 
isNull ? null :
featureReader.GetDateTime(id)));
                                        break;
                                default:
                                        break;
                        }
                }
                sel.AddFeatureIds(layer, layerClassName, idProps);
                String selText = EscapeForHtml(sel.ToXml());

                Response.Write(String.Format("  &nbsp;{5}\n", (row % 2) == 0 ? 
"Search" :
"Search2", row, i, row, selText, val));
        }
        Response.Write("");
        if (++row == 1000)
                break;
} while (featureReader.ReadNext());


Is there a way to avoid the foreach inside the for? (that foreach is in
order to get the xml of the feature:

<?xml version="1.0" encoding="UTF-8"?><FeatureSet
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:noNamespaceSchemaLocation="FeatureSet-1.0.0.xsd"> <Layer
id="7393d7b4-8be3-11e2-8002-08002700bc54"> <Class
id="KingOra:MAPS~LAYER1~GEOLOC"> <ID>bwYAAAAAAAA=</ID> </Class>
</Layer></FeatureSet>
)




--
View this message in context: 
http://osgeo-org.1560.n6.nabble.com/Another-way-to-list-selection-tp5040201.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
_______________________________________________
mapguide-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapguide-users

Reply via email to