public override bool Check(ref List <Error> checkResult) { try { List <Error> pResult = new List <Error>(); checkResult = pResult; IFeatureWorkspace ipFtWS = (IFeatureWorkspace)m_BaseWorkspace; IWorkspace ipWks = (IWorkspace)ipFtWS; IEnumDatasetName ipDatasetNames = ipWks.get_DatasetNames(esriDatasetType.esriDTFeatureDataset); IDatasetName ipDatasetName = ipDatasetNames.Next(); IFeatureDataset ipDataset = null; if (ipDatasetName != null) { ipDataset = ipFtWS.OpenFeatureDataset(ipDatasetName.Name); } List <IFeatureLayer> listFtLayer = new List <IFeatureLayer>(); Hy.Common.Utility.Esri.FeatClsOperAPI.GetFeatLayerInDs(ipDataset, ref listFtLayer); //二次for循环迭代控制器,add by wangxiang 20111201 int flag = 0; foreach (DataRow drLayer in dtLayer.Rows) { if (drLayer != null) { string strLayer = drLayer["AttrTableName"].ToString(); string strLayerName = drLayer["LayerName"].ToString(); IFeatureClass pFtCls = null; int i = 0; for (i = 0; i < listFtLayer.Count && flag < listFtLayer.Count; i++) { IFeatureLayer pFtLayer = listFtLayer[i]; //IDataset pDs = (IDataset) pFtLayer.FeatureClass; if (strLayerName == pFtLayer.Name) { try { pFtCls = ipFtWS.OpenFeatureClass(strLayer); } catch { LayerError LayerErrInfo = new LayerError(); LayerErrInfo.DefectLevel = this.DefectLevel; LayerErrInfo.m_strRuleInstID = this.m_InstanceID; LayerErrInfo.strLayerName = strLayerName; //LayerErrInfo.strErrorMsg = "图层名不符合标准(标准:" + strLayer + "(" + strLayerName + "))!"; LayerErrInfo.strErrorMsg = strLayerName + "(" + strLayer + ")层打开失败!"; pResult.Add(LayerErrInfo); } flag++; break; } } if (i >= listFtLayer.Count) { try { pFtCls = ipFtWS.OpenFeatureClass(strLayer); } catch { if (drLayer["LayerOption"].ToString() == "bx") { LayerError LayerErrInfo = new LayerError(); LayerErrInfo.DefectLevel = this.DefectLevel; LayerErrInfo.m_strRuleInstID = this.m_InstanceID; LayerErrInfo.strLayerName = strLayerName; //LayerErrInfo.strErrorMsg = "缺失必选图层:" + strLayer + "(" + strLayerName + ")"; LayerErrInfo.strErrorMsg = string.Format(Helper.ErrMsgFormat.ERR_310100001_1, strLayerName + "(" + strLayer + ")"); pResult.Add(LayerErrInfo); } } } if (pFtCls != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(pFtCls); } } } if (ipDataset != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(ipDataset); } } catch (Exception ex) { SendMessage(enumMessageType.Exception, ex.ToString()); return(false); } return(true); }
public override bool Check(ref List<Error> checkResult) { try { List<Error> pResult = new List<Error>(); checkResult = pResult; IFeatureWorkspace ipFtWS = (IFeatureWorkspace) m_BaseWorkspace; IWorkspace ipWks = (IWorkspace) ipFtWS; IEnumDatasetName ipDatasetNames = ipWks.get_DatasetNames(esriDatasetType.esriDTFeatureDataset); IDatasetName ipDatasetName = ipDatasetNames.Next(); IFeatureDataset ipDataset = null; if (ipDatasetName != null) { ipDataset = ipFtWS.OpenFeatureDataset(ipDatasetName.Name); } List<IFeatureLayer> listFtLayer = new List<IFeatureLayer>(); Hy.Common.Utility.Esri.FeatClsOperAPI.GetFeatLayerInDs(ipDataset, ref listFtLayer); //����forѭ��������������add by wangxiang 20111201 int flag = 0; foreach (DataRow drLayer in dtLayer.Rows) { if (drLayer != null) { string strLayer = drLayer["AttrTableName"].ToString(); string strLayerName = drLayer["LayerName"].ToString(); IFeatureClass pFtCls = null; int i = 0; for (i = 0; i < listFtLayer.Count && flag < listFtLayer.Count; i++) { IFeatureLayer pFtLayer = listFtLayer[i]; //IDataset pDs = (IDataset) pFtLayer.FeatureClass; if (strLayerName == pFtLayer.Name) { try { pFtCls = ipFtWS.OpenFeatureClass(strLayer); } catch { LayerError LayerErrInfo = new LayerError(); LayerErrInfo.DefectLevel = this.DefectLevel; LayerErrInfo.m_strRuleInstID = this.m_InstanceID; LayerErrInfo.strLayerName = strLayerName; //LayerErrInfo.strErrorMsg = "ͼ���������ϱ�(����" + strLayer + "(" + strLayerName + "))��"; LayerErrInfo.strErrorMsg = strLayerName + "(" + strLayer + ")���ʧ�ܣ�"; pResult.Add(LayerErrInfo); } flag++; break; } } if (i >= listFtLayer.Count) { try { pFtCls = ipFtWS.OpenFeatureClass(strLayer); } catch { if (drLayer["LayerOption"].ToString() == "bx") { LayerError LayerErrInfo = new LayerError(); LayerErrInfo.DefectLevel = this.DefectLevel; LayerErrInfo.m_strRuleInstID = this.m_InstanceID; LayerErrInfo.strLayerName = strLayerName; //LayerErrInfo.strErrorMsg = "ȱʧ��ѡͼ�㣺" + strLayer + "(" + strLayerName + ")"; LayerErrInfo.strErrorMsg = string.Format(Helper.ErrMsgFormat.ERR_310100001_1,strLayerName + "(" + strLayer + ")"); pResult.Add(LayerErrInfo); } } } if (pFtCls != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(pFtCls); } } } if (ipDataset != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(ipDataset); } } catch (Exception ex) { SendMessage(enumMessageType.Exception, ex.ToString()); return false; } return true; }