arcengine突击4——属性表显示

详细教程请见:

ArcEngine简单教程汇总

 

通过按钮,跳转到另一个窗口,通过选择图层显示属性表

窗口2内容,comboBox(选择图层)datagridview(显示属性表)

窗口1的按钮单击事件:如果有图层,传入地图,实例化窗口2并显示

private void button1_Click(object sender, EventArgs e)
        {
            if (axMapControl1.LayerCount > 0)
            {
                formTable ft = new formTable(axMapControl1);
                ft.Show();
            }
        }

窗口2初始化,清空comboBox中items,并将map中的图层名添加到items中,设置初始选中items[0]。

属性表更新方法,在窗体加载、comboBox选项变化时调用更新属性表。转换选择的图层为要素图层,要素图层游标查找,根据游标获取第一个要素。新建数据表对象,新建数据列,根据要素字段个数,实例化字段名为数据列并添加到数据表列中。新建数据行,当特征存在时,实例化行,字段遍历,添加对应记录,将行添加到数据表行中,将要素指向下一个要素。设置datagridview数据源为数据表

public formTable(AxMapControl pMapControl)
        {
            InitializeComponent();
            mapControl = pMapControl;
            comboBox1.Items.Clear();
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                comboBox1.Items.Add(mapControl.get_Layer(i).Name);
            }
            comboBox1.Text = comboBox1.Items[0].ToString();
        }


        private void formTable_Load(object sender, EventArgs e)
        {
            dataUpdate();
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            dataUpdate();
        }
       
        private void dataUpdate()
        {
            IFeatureLayer pFeatureLayer = mapControl.get_Layer(comboBox1.SelectedIndex) as IFeatureLayer;
            IFeatureCursor featureCursor = pFeatureLayer.Search(null, false);
            IFeature pFeature = featureCursor.NextFeature();
            DataTable dt = new DataTable();

            DataColumn column = null;
            for (int i = 0; i < pFeature.Fields.FieldCount; i++)
            {
                column = new DataColumn(pFeature.Fields.get_Field(i).Name);
                dt.Columns.Add(column);
            }

            DataRow row = null;
            while (pFeature != null)
            {
                row = dt.NewRow();
                for (int i = 0; i < pFeature.Fields.FieldCount; i++)
                {
                    row[i] = pFeature.get_Value(i).ToString();
                }
                dt.Rows.Add(row);
                pFeature = featureCursor.NextFeature();
            }
            dataGridView1.DataSource = dt;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值