コード例 #1
0
        private bool SelectFeatures()
        {
            try
            {
                string strTemp           = (string)this.cboFields.SelectedItem;
                string strFieldAliasName = strTemp;//.Substring(1, strTemp.Length - 2);
                string strFieldName      = m_FieldTable[strFieldAliasName].ToString();


                IFeatureClass pFtCls         = m_FeatureLayer.FeatureClass;
                int           nFieldIndex    = pFtCls.Fields.FindField(strFieldName);
                string        strWhereClause = "";
                if (pFtCls.Fields.get_Field(nFieldIndex).Type == esriFieldType.esriFieldTypeString)
                {
                    strWhereClause = strFieldName + " = '" + (string)this.cboFieldsValue.SelectedItem + "'";
                }
                else
                {
                    strWhereClause = strFieldName + " =" + (string)this.cboFieldsValue.SelectedItem;
                }

                if (m_FeatureLayer == null)
                {
                    return(false);
                }
                IQueryFilter      _queryFilter;
                IFeatureSelection _featureSelection;

                _featureSelection        = m_FeatureLayer as IFeatureSelection;
                _queryFilter             = new QueryFilterClass();
                _queryFilter.SubFields   = "*";
                _queryFilter.WhereClause = strWhereClause;

                m_Map.ClearSelection();
                _featureSelection.SelectFeatures(_queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);

                if (_featureSelection.SelectionSet.Count == 0)
                {
                    XtraMessageBox.Show("没有符合查询条件的要素!", "提示", MessageBoxButtons.OK);
                    return(false);
                }
                if (m_FeatureLayer.Visible == false)
                {
                    m_FeatureLayer.Visible = true;
                    object obj = MapOperAPI.GetLayerParent((IBasicMap)m_Map, (ILayer)m_FeatureLayer);
                    if (obj is ICompositeLayer)
                    {
                        ILayer pParentLayer = (ILayer)obj;
                        pParentLayer.Visible = true;
                    }
                }

                m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("没有匹配的查询结果,请重新设置查询条件!", "提示");
                return(false);
            }
            return(true);
        }