Hi,
I'm trying to create or update a table in a gdb by enabling user to select one or multiple items (eg, feature class, table, ..) from a file geodatabase when a dialog box opens (button addin) in ArcGIS Pro. Therefore, the output table should show feature class or table names, dates, status, username, ...
I'm doing this in C# and here's what I have created so far but it throws an error:
<SPAN class="keyword token">using</SPAN> System<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> System<SPAN class="punctuation token">.</SPAN>Collections<SPAN class="punctuation token">.</SPAN>Generic<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> System<SPAN class="punctuation token">.</SPAN>Linq<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> System<SPAN class="punctuation token">.</SPAN>Text<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> System<SPAN class="punctuation token">.</SPAN>Threading<SPAN class="punctuation token">.</SPAN>Tasks<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>Data<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>Geometry<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Catalog<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Editing<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Extensions<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Framework<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Framework<SPAN class="punctuation token">.</SPAN>Contracts<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Framework<SPAN class="punctuation token">.</SPAN>Dialogs<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Framework<SPAN class="punctuation token">.</SPAN>Threading<SPAN class="punctuation token">.</SPAN>Tasks<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">using</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Mapping<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">namespace</SPAN> Geodatabase_FC2Table
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">internal</SPAN> <SPAN class="keyword token">class</SPAN> <SPAN class="token class-name">Btn_OpenGDB</SPAN> <SPAN class="punctuation token">:</SPAN> Button
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">protected</SPAN> <SPAN class="keyword token">async</SPAN> <SPAN class="keyword token">override</SPAN> <SPAN class="keyword token">void</SPAN> <SPAN class="token function">OnClick</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
OpenItemDialog CatalogOpenDialog <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">OpenItemDialog</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
Title <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Select Geodatabases"</SPAN><SPAN class="punctuation token">,</SPAN>
MultiSelect <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">true</SPAN><SPAN class="punctuation token">,</SPAN>
Filter <SPAN class="operator token">=</SPAN> ItemFilters<SPAN class="punctuation token">.</SPAN>geodatabaseItems_all
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">;</SPAN>
GeoDatabaseReader geoDbReader <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">GeoDatabaseReader</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
List<SPAN class="operator token"><</SPAN>LayerObjectInfo<SPAN class="operator token">></SPAN> resultArr <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">List</SPAN><SPAN class="operator token"><</SPAN>LayerObjectInfo<SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN>CatalogOpenDialog<SPAN class="punctuation token">.</SPAN><SPAN class="token function">ShowDialog</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">==</SPAN> <SPAN class="keyword token">true</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">foreach</SPAN> <SPAN class="punctuation token">(</SPAN>Item item <SPAN class="keyword token">in</SPAN> CatalogOpenDialog<SPAN class="punctuation token">.</SPAN>Items<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
List<SPAN class="operator token"><</SPAN>LayerObjectInfo<SPAN class="operator token">></SPAN> aGdbResultArr <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">await</SPAN> geoDbReader<SPAN class="punctuation token">.</SPAN><SPAN class="token function">ReadGeoDataBase</SPAN><SPAN class="punctuation token">(</SPAN>item<SPAN class="punctuation token">.</SPAN>Name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
resultArr<SPAN class="punctuation token">.</SPAN><SPAN class="token function">AddRange</SPAN><SPAN class="punctuation token">(</SPAN>aGdbResultArr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
MessageBox<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Show</SPAN><SPAN class="punctuation token">(</SPAN>item<SPAN class="punctuation token">.</SPAN>Name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">class</SPAN> <SPAN class="token class-name">GeoDatabaseReader</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">async</SPAN> Task<SPAN class="operator token"><</SPAN>List<SPAN class="operator token"><</SPAN>LayerObjectInfo<SPAN class="operator token">></SPAN><SPAN class="operator token">></SPAN> <SPAN class="token function">ReadGeoDataBase</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">string</SPAN> GeoDataBasePath<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
List<SPAN class="operator token"><</SPAN>LayerObjectInfo<SPAN class="operator token">></SPAN> result <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">List</SPAN><SPAN class="operator token"><</SPAN>LayerObjectInfo<SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">await</SPAN> QueuedTask<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Run</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">=</SPAN><SPAN class="operator token">></SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">var</SPAN> path <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Uri</SPAN><SPAN class="punctuation token">(</SPAN>GeoDataBasePath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> gdb <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Geodatabase</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">FileGeodatabaseConnectionPath</SPAN><SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
IReadOnlyList<SPAN class="operator token"><</SPAN>FeatureClassDefinition<SPAN class="operator token">></SPAN> definitions <SPAN class="operator token">=</SPAN> gdb<SPAN class="punctuation token">.</SPAN>GetDefinitions<SPAN class="operator token"><</SPAN>FeatureClassDefinition<SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">foreach</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">var</SPAN> fdsDef <SPAN class="keyword token">in</SPAN> definitions<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
LayerObjectInfo layerObjectInfo <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">LayerObjectInfo</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
TableDefinition ATableDef <SPAN class="operator token">=</SPAN> fdsDef <SPAN class="keyword token">as</SPAN> TableDefinition<SPAN class="punctuation token">;</SPAN>
layerObjectInfo<SPAN class="punctuation token">.</SPAN>LayerName <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">IsNullOrEmpty</SPAN><SPAN class="punctuation token">(</SPAN>ATableDef<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetAliasName</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">?</SPAN> ATableDef<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetName</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">:</SPAN> ATableDef<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetAliasName</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
DateTime today <SPAN class="operator token">=</SPAN> DateTime<SPAN class="punctuation token">.</SPAN>Today<SPAN class="punctuation token">;</SPAN>
layerObjectInfo<SPAN class="punctuation token">.</SPAN>Date <SPAN class="operator token">=</SPAN> today<SPAN class="punctuation token">;</SPAN>
layerObjectInfo<SPAN class="punctuation token">.</SPAN>UserName <SPAN class="operator token">=</SPAN> Environment<SPAN class="punctuation token">.</SPAN>UserName<SPAN class="punctuation token">;</SPAN>
layerObjectInfo<SPAN class="punctuation token">.</SPAN>Status <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Complete"</SPAN><SPAN class="punctuation token">;</SPAN>
result<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Add</SPAN><SPAN class="punctuation token">(</SPAN>layerObjectInfo<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">return</SPAN> result<SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">class</SPAN> <SPAN class="token class-name">LayerObjectInfo</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">string</SPAN> LayerName <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">get</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">set</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">string</SPAN> Date <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">get</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">set</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">string</SPAN> UserName <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">get</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">set</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">string</SPAN> Status <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">get</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">set</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Thank you.