现在的位置: 首页 > 综合 > 正文

取相关记录集数据

2013年09月10日 ⁄ 综合 ⁄ 共 3353字 ⁄ 字号 评论关闭

//1 使可以选择对象。

public void SelectPoint()
{
    foreach (Layer currentLayer in m_mapControl.Map.Layers)
    {
        Dataset dataset = currentLayer.Dataset;
        #region
        //这里必须加dataset!= null  这样可以先判读dataset。
        //如果dataset为空。就可以不执行dataset.Name == "EQPoint"
        //如果不加dataset!=null,如果dataset为空时,执行dataset.Name == "EQPoint"会使程序崩掉
        //dataset.Name  要使用对象属性,先要保证对象不为空
        #endregion
        if (dataset != null && dataset.Name == "Point")
        {
            currentLayer.IsSelectable = true;
        }
        else
        {
            currentLayer.IsSelectable = false;
        }
    }
    SetMapAction(Action.Select);  //设置为可以选择地图图形对象,select只能点击选择,不能框选
 
}

//2 触发图形对象选择事件,选点----》取点id----》根据点id取有关所有面id---》根据面ID找到

void m_mapControl_GeometrySelected(object sender, GeometrySelectedEventArgs e)
{
    Recordset recordsetSelected = null;
    //获得选中的点对象。因为设了Acton.select  所以只能选中一个对象
    Selection[] arrSelections = m_mapControl.Map.FindSelection(true);
    if (arrSelections != null && arrSelections.Length != 0)
    {
        //把选择集转化为记录集
        recordsetSelected = arrSelections[0].ToRecordset();
        //要从记录集取数据,就先移到第一行
        recordsetSelected.MoveFirst();
        if (!recordsetSelected.IsEOF)
        {
            //获得选中点 在EQPoint表中第三列值,即linkID
            Object objSelectedLinkID = recordsetSelected.GetFieldValue(2);
            string strSelectedLinkID = objSelectedLinkID.ToString();
            rs_EQCon = ds_EQCon.Query("ID='" + strSelectedLinkID + "'"CursorType.Static);
            //获得记录集中所有AAC
            ArrayList arrlistAAC = new ArrayList();
            rs_EQCon.MoveFirst();
            while (!rs_EQCon.IsEOF)
            {
                object objSelectedAAC = rs_EQCon.GetFieldValue(5);
                if (!arrlistAAC.Contains(objSelectedAAC))  //如果Arraylist中有的就不加入了
                {
                    arrlistAAC.Add(objSelectedAAC.ToString());
                }
 
                rs_EQCon.MoveNext();
            }
            string strSelectedAAC = FormatArrayList(arrlistAAC);
            ShowThemeLayer(strSelectedAAC);
            rs_EQCon.Dispose();
        }
    }
    recordsetSelected.Dispose();
}

private string FormatArrayList(ArrayList arrlist)
{
    StringBuilder strBuilder = new StringBuilder();
    strBuilder.Append("(");
    for (int i = 0; i < arrlist.Count; i++)
    {
        strBuilder.Append("'" + arrlist[i].ToString() + "'");
        if (i < arrlist.Count - 1)
        {
            strBuilder.Append(",");
        }
    }
    strBuilder.Append(")");
    return strBuilder.ToString();
}

        /// <summary>
        /// 根据条件筛选出需要的面
        /// </summary>
private void ShowThemeLayer(string strSelectedAAC)
{
    m_mapControl.Map.Layers.Remove(str_ThemeLayerName);
    DatasetVector dsvCON = m_workspace.Datasources[0].Datasets["mian"as DatasetVector;
    ThemeLabel themeLabel = new ThemeLabel();
    themeLabel.LabelExpression = "city";
 
    TextStyle textStyle = new TextStyle();
    textStyle.ForeColor = Color.Red;
    textStyle.FontHeight = 8;
    textStyle.IsSizeFixed = true;
 
    themeLabel.UniformStyle = textStyle;
 
    Layer layerCON = m_mapControl.Map.Layers.Add(dsvCON, themeLabel, true);
    QueryParameter parameter = new QueryParameter();
 
    string strFilter = "mianID in " + strSelectedAAC;
    parameter.AttributeFilter = strFilter;
    layerCON.DisplayFilter = parameter;
    str_ThemeLayerName = layerCON.Name;
 
    m_mapControl.Map.Refresh();
}

抱歉!评论已关闭.