请教 C#ArcEngine二次开发引入类似ArcMap对属性表内容操作的方法
通过其他博主的帮助,已经实现了属性表的生成
但是想要增加类似ArcMap对属性表内容的操作,比如缩放至所选项、增删改查等操作。最好可以基于下列代码进行功能添加
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace AutoPolyLine
{
public partial class AttributeTable : Form
{
ILayer mLayer; //**
private IFeatureLayer currentFeatureLayer;
public IFeatureLayer CurrentFeatureLayer
{
get { return currentFeatureLayer; }
set { currentFeatureLayer = value; }
}
//获取主窗体传入的地图
private IMap currentMap;
public IMap CurrentMap
{
get { return currentMap; }
set { currentMap = value; }
}
public AttributeTable(ILayer pLayerT) //**
{
InitializeComponent();
mLayer = pLayerT; //**
OpenAttributeTable();
}
private void AttributeTable_Load(object sender, EventArgs e)
{
OpenAttributeTable(); //自定义方法
}
public void OpenAttributeTable()
{
IFeatureLayer pFeatureLayer = mLayer as IFeatureLayer; //**
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //** using ESRI.ArcGIS.Geodatabase;
DataTable dt = new DataTable();
if (pFeatureClass != null)
{
DataColumn dc;
for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++)
{
dc = new DataColumn(pFeatureClass.Fields.get_Field(i).Name);
dt.Columns.Add(dc);//获取所有列的属性值
}
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
DataRow dr;
while (pFeature != null)
{
dr = dt.NewRow();
for (int j = 0; j < pFeatureClass.Fields.FieldCount; j++)
{
//判断feature的形状
if (pFeature.Fields.get_Field(j).Name == "Shape")
{
if (pFeature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
{
dr[j] = "点";
}
if (pFeature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
dr[j] = "线";
}
if (pFeature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
{
dr[j] = "面";
}
}
else
{
dr[j] = pFeature.get_Value(j).ToString();//增加行
}
}
dt.Rows.Add(dr);
pFeature = pFeatureCursor.NextFeature();
}
}
this.dataGridView1.DataSource = dt;
}
}
}