#region 双击定位方法
/// <summary>
/// 单击定位方法
/// </summary>
/// <param name="iRow"></param>
public static void LocateFeat(GridView gridView, string strFeaLyrName, int iRow)
{
string strXbUID = gridView.GetRowCellValue(iRow, "PK_UID").ToString().Trim();
//取得图层
IFeatureLayer pXbLyr = Form_YZLYSGL.GetFeaLyr(strFeaLyrName);
if (pXbLyr == null)
{
return;
}
//通过FeatureLayer的FeatureClass属性得到FeatureClass对象
IFeatureClass pFeaCls = pXbLyr.FeatureClass;
//传入QueryFilter过滤条件
IQueryFilter pQue = new QueryFilter();
pQue.WhereString = "PK_UID='" + strXbUID + "'";
//通过FeatureClass对象的 GetEntity<T>(IQueryFilter queryFilter)方法返回RowBase对象
RowBase pRow = pFeaCls.GetEntity<RowBase>(pQue);
if (pRow == null)
{
ForeStar.CoreUI.Message.MessageManager.Show("没有查询到小班", "提示!");
return;
}
//定义包络矩形对象
IEnvelope pEnv = null;
int iOID = 0;
if (pRow is IFeature)
{
iOID = (pRow as IFeature).OID; //IFeature,RowBase都继承自IRow,记录一行记录。此处父类——子类
pEnv = (pRow as IFeature).ShapeCopy.Envelope;
}
else
{
iOID = pRow.GetValue<int>(pFeaCls.OIDFieldName);
//将IFeatureClass的对象ShapeCopy属性返回的IGeometry对象的Envelope属性返回的Envelope对象传给pEnv对象
pEnv = pFeaCls.GetFeature(iOID).ShapeCopy.Envelope;
}
//定义当前系统的IMapControl控件为pMapControl对象
IMapControl pMapControl = ForeStar.Core.ServiceLocator.ServiceLocatorFactory.ServiceLocator.
GetInstance<IMapControl>(ForeStar.Core.ServiceLocator.ServiceLocatorKeys.MapControl);
//定义IMap对象并实例化
IMap pMap = pMapControl.ActiveView.FocusMap;
//更改小班面图层的显示范围
//IEnvelope pNewEnv = XYTableDeclare.ExpandEnvelope2(pEnv, 5);
//pMap.ZoomGeometry(pNewEnv);
//将地图文档中各图层依据pEnv进行缩放
pMap.ZoomGeometry(pEnv);
//将选定的(pFeaCls.OIDFieldName + "=" + iOID)以SelectionResultNew的形式显示
IQueryFilter pSelectFilter = new QueryFilter();
pSelectFilter.WhereString = pFeaCls.OIDFieldName + "=" + iOID;
pXbLyr.SelectFeatures(pSelectFilter, SelectionResultType.SelectionResultNew, true);
}
#endregion
#region 获取小班FeatureLayer
/// <summary>
/// 获取小班FeatureLayer
/// </summary>
/// <returns></returns>
public static IFeatureLayer GetFeaLyr(string strFeaLyrName)
{
IMapControl pMapControl = ForeStar.Core.ServiceLocator.ServiceLocatorFactory.
ServiceLocator.GetInstance<IMapControl>(ForeStar.Core.ServiceLocator.ServiceLocatorKeys.MapControl);
IMap pMap = pMapControl.ActiveView.FocusMap;
for (int i = 0; i < pMap.LayerCount; i++)
{
ILayer pLyr = pMap.GetLayer(i);
if (pLyr is IFeatureLayer)
{
IFeatureLayer pFeaLyr = pLyr as IFeatureLayer;
if (pFeaLyr.Name == strFeaLyrName)
return pFeaLyr;
}
}
return null;
}
#endregion
#region 获取某GridControl中选择的小班个数
/// <summary>
/// 获取某GridControl中选择的小班个数
/// </summary>
/// <returns></returns>
public static int GetCheckBoxNum(GridControlClass gridcontrol)
{
int i = 0;
List<RowBase> lstGridCheck = gridcontrol.DataSource as List<RowBase>;
if (lstGridCheck != null && lstGridCheck.Count > 0)
{
foreach (var item in lstGridCheck)
{
bool select = item.GetValue<bool>("SHOWCHECKBOX");
if (select)
{
i++;
}
}
}
return i;
}
#endregion
#region 返回某GridControl字段值(IList)
/// <summary>
/// 返回某GridControl字段值(IList)
/// </summary>
/// <returns></returns>
public static IList<string> GetGridControlfieldValue(GridControlClass GridControl, string fieldName)
{
IList<string> listYSXB = new List<string>();
List<RowBase> lstFYXBGrid = GridControl.DataSource as List<RowBase>;
if (lstFYXBGrid != null && lstFYXBGrid.Count > 0)
{
foreach (var item in lstFYXBGrid)
{
bool select = item.GetValue<bool>("SHOWCHECKBOX");
if (select)
{
string temp = item.GetValue<string>(fieldName);
if (temp == null) continue;
if (temp == "") MessageManager.Show(fieldName + "值为空!");
listYSXB.Add(temp);
}
}
}
return listYSXB;
}
#endregion
#region 获取窗体
/// <summary>
/// 获取窗体
/// </summary>
/// <param name="m_pXmlForm">获得的窗体</param>
/// <param name="formName">窗体文件名</param>
/// <returns></returns>
public static IDataForm GetForm(IDataForm m_pXmlForm, string formName)
{
IApplicationContext pContext = ContextRegistry.GetContext();
IOpenXmlForm openHelper = pContext.GetObject("IOpenXmlForm") as IOpenXmlForm;
string XmlForm = formName;
m_pXmlForm = openHelper.DeSerialize(XmlForm) as IDataForm;
return m_pXmlForm;
}
#endregion
/// <summary>
/// 初始化GridControl
/// </summary>
/// <param name="pGridControlClass"></param>
private static void InitGrid(ForeStar.CoreUI.Win.Control.GridControlClass pGridControlClass)
{
DevExpress.XtraGrid.Views.Grid.GridView pGridView = pGridControlClass.FocusedGridView;
pGridView.BeginInit();
pGridView.Columns.Clear();
DevExpress.XtraGrid.Columns.GridColumn pGridColumnOID = new DevExpress.XtraGrid.Columns.GridColumn();
pGridColumnOID.Caption = "唯一编号";
pGridColumnOID.FieldName = "OID";
pGridColumnOID.Name = "OID";
//pGridColumnOID.Width = 45;
pGridColumnOID.Visible = true;
pGridColumnOID.OptionsColumn.AllowEdit = false;
pGridView.Columns.Add(pGridColumnOID);
DevExpress.XtraGrid.Columns.GridColumn pGridColumnPP = new DevExpress.XtraGrid.Columns.GridColumn();
pGridColumnPP.Caption = "是否匹配";
pGridColumnPP.FieldName = "PP";
pGridColumnPP.Name = "PP";
//pGridColumnPP.Width = 45;
pGridColumnPP.Visible = true;
pGridColumnPP.OptionsColumn.AllowEdit = false;
pGridView.Columns.Add(pGridColumnPP);
pGridView.EndInit();
}
#region 刷新m_pGridViewFYXB,使其“选择”列为未选中状态
public static void RefreshGridViewFYXB()
{
for (int i = 0; i < m_pGridViewFYXB.RowCount; i++)
{
m_pGridViewFYXB.SetRowCellValue(i, m_pGridViewFYXB.Columns["SHOWCHECKBOX"], false);
}
m_pGridViewFYXB.OptionsView.ColumnAutoWidth = false;
}
#endregion
public class LogManage
{
/// <summary>
/// 写日志
/// </summary>
/// <param name="message"></param>
public static void WriteLog(string message)
{
try
{
string filePath = Application.StartupPath + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + "Log.txt";
string strLog = "时间:" + DateTime.Now.ToString("yyyy-MM-dd HH: mm: ss: ffff") + " " + "详细信息:" + message;
if (File.Exists(filePath))
{
StreamWriter sw = File.AppendText(filePath);
sw.WriteLine(strLog);
sw.Flush();
sw.Close();
}
else
{
StreamWriter rw = File.CreateText(filePath);
rw.WriteLine(strLog);
rw.Flush();
rw.Close();
}
}
catch (Exception ex)
{
}
}
}
public static class CommonMethod
{
/// <summary>
/// 数据输出主方法
/// </summary>
/// <param name="lstConvertPams"></param>
/// <param name="strZdbPath"></param>
/// <param name="proValue"></param>
public static void DataOutMain(List<ConvetParms> lstConvertPams, string strZdbPath, int proValue, ProgressBarClass m_pProgress_Bar)
{
if (lstConvertPams == null || lstConvertPams.Count == 0)
{
m_pProgress_Bar.Position += proValue;
m_pProgress_Bar.Refresh();
return;
}
//创建空的zdb
bool IsCreateDB = CreateEmptyZDB(strZdbPath);
if (!IsCreateDB)
{
MessageManager.Show(MessageType.Error, "创建目标数据库失败!", "系统提示");
m_pProgress_Bar.Position += proValue;
m_pProgress_Bar.Refresh();
return;
}
else
{
ConnectionInfo conInfo = new ConnectionInfo();
conInfo.WorkspaceType = WorkspaceType.SqlLite;
conInfo.Database = strZdbPath;
IWorkspace pTarWorkSpace = WorkspaceFactoryProvider.GetWorkspaceFactory().OpenWorkspace(conInfo);
if (pTarWorkSpace == null)
{
m_pProgress_Bar.Position += proValue;
m_pProgress_Bar.Refresh();
return;
}
var pDataStructConvert = new DataStructConvertClass();
int step = Convert.ToInt32(proValue / lstConvertPams.Count);
bool bResult = false;
int i = 0;
foreach (var item in lstConvertPams)
{
m_pProgress_Bar.Position += step;
m_pProgress_Bar.Refresh();
if (item == null) continue;
item.pTarWorkSpace = pTarWorkSpace;
bResult = pDataStructConvert.Convert(item.pSourTable, item.pSourceQFilter, item.pTarWorkSpace, item.strTarTabName, null);
if (bResult)
{
i++;
}
}
//if (i == 7 || i == 9)
//{
m_pProgress_Bar.Position = 100;
m_pProgress_Bar.Refresh();
MessageManager.Show(MessageType.Information, "导出完成!", "系统提示");
//}
//else
//{
// m_pProgress_Bar.Position = 100;
// m_pProgress_Bar.Refresh();
// MessageManager.Show(MessageType.Information, "导出失败!", "系统提示");
//}
}
}
/// <summary>
/// 创建空的zdb
/// </summary>
/// <param name="strRealPath"></param>
/// <returns></returns>
private static bool CreateEmptyZDB(string strRealPath)
{
if (string.IsNullOrEmpty(strRealPath))
{
MessageManager.Show(MessageType.Error, "路径为空,不能创建数据源。", "系统提示");
return false;
}
if (File.Exists(strRealPath))
{
if (MessageManager.Show(MessageType.Warning, "指定定路径下已存在工程文件,是否覆盖?", "系统提示", MessageButton.YesNo) == MessageResult.No)
{
return false;
}
}
try
{
IMZDsConnInfo conInfo = new mzDsConnInfo();
conInfo.Server = strRealPath;
conInfo.DataSourceType = mzDataSourceType.mzDsSqlite;
IMZDataSource pDataSource = mzProviderManager.GetProviderManager().CreateMZDataSource(mzProviderManager.GetProviderManager().GetAt(0).ProviderType, conInfo);
if (pDataSource == null)
{
MessageManager.Show(MessageType.Error, "创建目标数据库失败!", "系统提示");
return false;
}
pDataSource.Create();
return true;
}
catch (Exception ex)
{
MessageManager.Show(MessageType.Error, "创建目标数据库失败!原因:\r\n" + ex.ToString(), "系统提示");
return false;
}
}
/// <summary>
/// 初始化“项目”ComboBox
/// </summary>
/// <param name="cmbProjectName"></param>
/// <param name="pQuery"></param>
public static void InitProjectCmb(FieldComboBox cmbXMMC, IQueryFilter pQuery)
{
ITable pTable = ForeStar.Data.Metadata.MetadataWorkspaceFactory.OpenMetadataWorkspace().OpenTable(TableDeclare.PRODUCT).Table;
if (pTable == null)
return;
List<RowBase> prjRows = pTable.GetEntityList<RowBase>(pQuery);
cmbXMMC.DisplayFieldName = "XMMC";
cmbXMMC.ValueFieldName = "XMBH";
cmbXMMC.DataSource = prjRows;
}
/// <summary>
/// 初始化“工程实施年度”ComboBox
/// </summary>
/// <param name="cmbGCSSND"></param>
/// <param name="pQuery"></param>
public static void InitGCSSNDCmb(FieldComboBox cmbGCSSND, IQueryFilter pQuery)
{
ITable pTable = ForeStar.Data.Metadata.MetadataWorkspaceFactory.OpenMetadataWorkspace().OpenTable(TableDeclare.PRODUCT).Table;
if (pTable == null)
return;
List<string> years = new List<string>();
if (pQuery == null)
{
years = pTable.GetUniqueValue("GCSSND");
}
else
{
years = pTable.GetUniqueValue("GCSSND", pQuery);
}
List<RowBase> yearRows = new List<RowBase>();
foreach (string item in years)
{
RowBase row = new RowBase();
row["year"] = item;
yearRows.Add(row);
}
cmbGCSSND.DisplayFieldName = "year";
cmbGCSSND.DataSource = yearRows;
}
/// <summary>
/// 进度条显示设置
/// </summary>
/// <param name="m_pProgress_Bar"></param>
public static void SetProgressBar(ProgressBarClass m_pProgress_Bar)
{
m_pProgress_Bar.BackColor = Color.Blue;
m_pProgress_Bar.Clear();
m_pProgress_Bar.Minimum = 0;
m_pProgress_Bar.Maximum = 100;
m_pProgress_Bar.Position = 5;
m_pProgress_Bar.Refresh();
}
}