要获取数据库(如.mdb,.gdb)中的独立表,需用到IStandaloneTable接口与ITable接口,代码如下
public IStandaloneTable GetTableByName(string tablename)
{
if (m_CurrentWorkspace!=null)
{
IFeatureWorkspace pFeatureWorkspace = m_CurrentWorkspace as IFeatureWorkspace;
if (m_CurrentWorkspace == null | pFeatureWorkspace == null)
{
return null;
}
if ((m_CurrentWorkspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTTable, tablename))
{
IStandaloneTable ist = new StandaloneTable();
ITable itabl = pFeatureWorkspace.OpenTable(tablename);
ist.Table = itabl;
return ist;
}
return null;
}
return null;
}
再通过TreeView控件(WPF)展示,代码如下:
IStandaloneTable pfcT = GetTableByName(featureclassname);
IStandaloneTableCollection iTableCollection = m_MapCtrl.Map as IStandaloneTableCollection;
iTableCollection.AddStandaloneTable(pfcT);
TreeViewItem mtrnode = new TreeViewItem();
mtrnode.Header = featureclassname;
treeTable.Items.Add(mtrnode);
treeTable.Items.Refresh();
注意:本文选择IStandaloneTable接口而非ITable,因为当数据源缺失时,使用ITable是获取不了表的,从IStandaloneTable中的描述“Provides access to members that control a standalone table.”也可得知该接口可获取独立表。