Me gustaría saber cuál es la forma más sencilla para establecer el punto de partida de un diálogo datos a un IWorkspace?
Mi problema es que, básicamente, no quiero una conexión (.sde archivo) para los usuarios. Quiero establecer el punto de partida para un área de trabajo conectados a través de IPropertySet. Es posible?
Esto está relacionado con: la Fuerza de un nuevo AddDataDialog para abrir en un directorio definido por el camino , pero no ayuda.
EDITAR:
siguiente Kirk sugerencia, he aquí un fragmento de código. Esto no funciona.
public static IDataset OpenDatasetDialog(IWorkspace workspace,int handle)
{
var workspaceName = (IWorkspaceName)((IDataset)workspace).FullName);
var gxDatabase = new GxdatabaseClass();
gxDatabase.WorkspaceName = workspaceName;
// we need to set a different variable as .NET runtime does not allow ref parameters with casts
object gxObj = (object)gxDatabase;
IGxDialog openDialog = new GxDialogClass();
openDialog.RememberLocation = false;
openDialog.set_StartingLocation(ref gxObj);
var filterColletion = (IGxObjectFilterCollection)openDialog;
filterColletion.AddFilter(new GxFilterTablesAndFeatureClassesClass(), true);
openDialog.AllowMultiSelect = false;
IEnumGxObject datasets = null;
IDataset dataset = null;
if (openDialog.DoModalOpen(0, out datasets) && datasets != null)
{
IGxObject gxObject = datasets.Next();
if (gxObject is IGxDataset)
{
IGxDataset gxDataset = (IGxDataset)gxObject;
dataset = gxDataset.Dataset;
}
else
throw new ArgumentException();
}
openDialog.InternalCatalog.Close();
return dataset;
}