private void ResetDataSource(IWorkspace pWs, IFeatureLayer pFeaLayer, LayerInfo layerInfo, string strYear)
{
try
{
IWorkspaceName pWorkspaceName = GetWorkspaceName(pWs);
IDataLayer2 pDataLayer = pFeaLayer as IDataLayer2;
if (pFeaLayer.FeatureClass != null)
{
pDataLayer.Disconnect();
}
IDatasetName pDataName = pDataLayer.DataSourceName as IDatasetName;
string strLayerName = layerInfo.Name;
if (strYear != System.DateTime.Today.Year.ToString())
{
strLayerName = strLayerName + "_" + strYear;
}
if (PS.Plot.Common.EngineAPI.IsNameExist(pWs, strLayerName, esriDatasetType.esriDTFeatureClass))
{
pDataName.Name = strLayerName;
pDataName.WorkspaceName = pWorkspaceName;
pDataLayer.Connect(pDataName as IName);
}
}
catch (Exception ep)
{
LogHelper.WriteLog("重置数据源失败,ResetDataSource", ep, "重置数据源失败");
}
}
/// <summary>
/// 获取工作空间的名称
/// </summary>
/// <param name="pWorkspace"></param>
/// <returns></returns>
private IWorkspaceName GetWorkspaceName(IWorkspace pWorkspace)
{
IDataset pDataset = pWorkspace as IDataset;
return pDataset.FullName as IWorkspaceName;
}