private static DataTable getConfigDataTable()
{
try
{
DataTable dt = new DataTable();
_tab = Globals.FindTable(ArcMap.Document.FocusMap, _defaultsTableName);
if (_tab == null)
return null;
for (int i = 0; i < _tab.Fields.FieldCount; i++)
{
if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeString)
dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
else if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeGlobalID)
dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
else if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeGUID)
dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
else if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeDate)
dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
else
dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(int));
}
ICursor cur = _tab.Search(null, true);
IRow row;
System.Collections.ArrayList ar = new System.Collections.ArrayList();
while ((row = cur.NextRow()) != null)
{
for (int i = 0; i < _tab.Fields.FieldCount; i++)
{
ar.Add(row.get_Value(i));
}
dt.Rows.Add(ar.ToArray());
ar.Clear();
}
if (row != null)
{
Marshal.ReleaseComObject(row);
GC.WaitForFullGCComplete();
row = null;
}
if (cur != null)
{
Marshal.ReleaseComObject(cur);
GC.Collect(300);
GC.WaitForFullGCComplete();
cur = null;
}
return dt;
}
catch (Exception ex)
{
MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain0") + ex.Message);
return null;
}
}