📄 ucunivstatforpops1.cs.svn-base
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using dist.hb.EnvQueryStat.Pub;
using System.Collections;
using dist.hb.EnvQueryStat.StatSet;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
namespace dist.hb.EnvQueryStat.Stat
{
public partial class ucUnivStatForPOPs1 : UserControl
{
#region "初始化及成员对象"
private ArrayList MainGrouList;
private ArrayList SecondGroupList;
private clsProcAttFilter proAttFilter;//处理过滤
private clsProcStatItem StatItem;//处理统计项
private clsStatEnv StatEnv;//统计环境
private clsProcStat ProcStat;//处理统计
private ucStatBandeExport StatBandeExport;//高级GRID输出
public ucUnivStatForPOPs1()
{
InitializeComponent();
MainGrouList = new ArrayList();
SecondGroupList = new ArrayList();
proAttFilter = new clsProcAttFilter();
StatItem = new clsProcStatItem();
StatEnv = new clsStatEnv();
ProcStat = new clsProcStat();
StatBandeExport = new ucStatBandeExport();
}
private OleDbConnection m_OleDbConn;
public OleDbConnection OleDbConn
{
get { return m_OleDbConn; }
set
{
if (value == null) return;
if (value == m_OleDbConn) return;
m_OleDbConn = value;
}
}
private ESRI.ArcGIS.Controls.IMapControl4 m_MapControl;
public ESRI.ArcGIS.Controls.IMapControl4 MapControl
{
set
{
m_MapControl = value;
}
}
private int StatInstID;
public int StatID
{
set
{
StatInstID = value;
}
}
public string ProvCode = "";//省级代码,如果为空,则为全国用户,否则为省级用户
#endregion
#region "以下函数填充树(处理统计分类)"
//处理统计分类
System.Data.DataTable m_SCTable;
//绑定到统计分类表
private void BindSCTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT StatClassID,PStatClassID,StatClassName FROM FS_StatInstClass";
System.Data.OleDb.OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
Adapter.Fill(ds, "FS_StatInstClass");
m_SCTable = ds.Tables["FS_StatInstClass"];
}
#endregion
#region "以下函数处理统计实例"
System.Data.OleDb.OleDbDataAdapter m_StatInstDbDataAdapter;
System.Data.DataSet m_StatInstDataSet;
System.Data.DataTable m_StatInstTable;
OleDbCommandBuilder m_StatInstCB;
string m_strStatInstTbl = "FS_StatInst";
int m_nStatInstImageIndex = 6;
//统计实例绑定
private void BindStatInstTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT * FROM " + m_strStatInstTbl;
m_StatInstDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
m_StatInstCB = new OleDbCommandBuilder(m_StatInstDbDataAdapter);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = m_OleDbConn;
//cmd.Transaction = m_tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
m_StatInstDbDataAdapter.SelectCommand = cmd;
m_StatInstDbDataAdapter.Fill(ds, m_strStatInstTbl);
m_StatInstTable = ds.Tables[m_strStatInstTbl];
m_StatInstDataSet = ds;
}
//取最大值
private int GetMaxID()
{
if (m_StatInstTable == null) return 0;
string strTemp = m_StatInstTable.Compute("MAX(StatInstID)", "").ToString();
if (strTemp == "") return 1;
else return 1 + Convert.ToInt32(strTemp);
}
//对属性处理对象进行初始化
private void InitAttFilter(int statInstID, int AbstractID)
{
proAttFilter.StatInstID = statInstID;//统计实例ID
proAttFilter.AbstractStatID = AbstractID;//统计模板ID
proAttFilter.LoadAttFilterTable();//属性过滤表
proAttFilter.LoadStatTemplateInfo();//统计模板相关信息表
proAttFilter.LoadAttFilterFieldsInfo();//属性字段信息表
proAttFilter.LoadFieldsInfo();//所有的字段信息表
gridControl1.DataSource = proAttFilter.m_AttFilterTable;
proAttFilter.FillrepositoryItemComboBox_field(repositoryItemLookUpEdit_field1);//处理字段下来列表框
proAttFilter.InitItemLookUp(gridView1);//预加载所有的lookupedit
gridControl1.Update();
}
//当统计模板变化时,统计字段要重新设定
private void LoadFieldSetInfo()
{
TreeNode tn = null;
if (tn == null) proAttFilter.StatInstID = -1;
else if (tn.ImageIndex == m_nStatInstImageIndex) proAttFilter.StatInstID = Convert.ToInt32(tn.Name);//统计实例ID
else proAttFilter.StatInstID = -1;
proAttFilter.AbstractStatID = Convert.ToInt32(0);//统计模板ID
proAttFilter.LoadAttFilterTable();//属性过滤表
proAttFilter.LoadStatTemplateInfo();//统计模板相关信息表
proAttFilter.LoadAttFilterFieldsInfo();//字段信息表
gridControl1.DataSource = proAttFilter.m_AttFilterTable;
proAttFilter.FillrepositoryItemComboBox_field(repositoryItemLookUpEdit_field1);//处理字段下拉列表框
proAttFilter.InitItemLookUp(gridView1);//预加载所有的lookupedit
}
#endregion
#region "窗体事件"
private void ucStatInst_Load(object sender, EventArgs e)//窗体加载事件
{
comboBox_GroupType.SelectedIndex = 0;//分组类型
BindStatInstTable();//绑定统计实例表
BindSCTable();//绑定统计分类表
//实例化属性过滤对象
proAttFilter.OleDbConn = m_OleDbConn;
StatItem.OleDbConn = m_OleDbConn;
StatItem.gridView2 = gridView2;
StatItem.procAttFilter = proAttFilter;
StatItem.repositoryItemComboBox_statField = repositoryItemComboBox_statField;
LoadStatInst(StatInstID);
xtraTabPage4.Controls.Add(StatBandeExport);
StatBandeExport.Dock = DockStyle.Fill;
ProcWinSize();
if(this.Parent != null) this.Parent.Text = StatEnv.StatInstName;
}
private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
{
if (e.Column.Name != "gridColumn6") return;
if (e.RowHandle < 0 || e.RowHandle > 1000) return;
DataRow row = gridView1.GetDataRow(e.RowHandle);
if (row == null) return;
if (row.RowState == DataRowState.Deleted) return;
if (row["Field"].ToString() == "") return;
int Fieldid = Convert.ToInt32(row["Field"]);
SetFieldValueSelector(e, Fieldid);
}
private void gridView1_FocusedColumnChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedColumnChangedEventArgs e)
{
//if (e.PrevFocusedColumn == null) return;
//if (e.PrevFocusedColumn.Name != "gridColumn4") return;
if(gridView1.FocusedRowHandle < 0 ) gridControl1.EmbeddedNavigator.Buttons.EndEdit.DoClick();
return;
DataView view = (DataView)gridView1.DataSource;
if (view == null) return;
DataTable dt = (DataTable)view.Table;
if (dt == null) return;
if (gridView1.FocusedRowHandle < 0 || gridView1.FocusedRowHandle > 1000) return;
DataRow row = dt.Rows[gridView1.FocusedRowHandle];
if (row == null) return;
if (row["Field"].ToString() == "") return;
int Fieldid = Convert.ToInt32(row["Field"]);
DataRow dr = proAttFilter.GetFieldInfo1(Fieldid);
if (dr == null) return;
string DataType = dr["FieldType"].ToString();
if (DataType != ConstDataType.CData) return;
//proAttFilter.SetDict(repositoryItemLookUpEdit_value1, Fieldid);
//proAttFilter.ProFieldValueSelect(gridColumn6, repositoryItemLookUpEdit_value1, repositoryItemTextEdit_value, repositoryItemDateEdit1, Fieldid);
}
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
return;
DataView view = (DataView)gridView1.DataSource;
if (view == null) return;
DataTable dt = (DataTable)view.Table;
if (dt == null) return;
if (gridView1.FocusedRowHandle < 0 || gridView1.FocusedRowHandle > 1000) return;
DataRow row = dt.Rows[gridView1.FocusedRowHandle];
if (row == null) return;
if (row["Field"].ToString() == "") return;
int Fieldid = Convert.ToInt32(row["Field"]);
DataRow dr = proAttFilter.GetFieldInfo1(Fieldid);
if (dr == null) return;
string DataType = dr["FieldType"].ToString();
if (DataType != ConstDataType.CData) return;
//proAttFilter.ProFieldValueSelect(gridColumn6, repositoryItemLookUpEdit_value1, repositoryItemTextEdit_value, repositoryItemDateEdit1, Fieldid);
}
private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
return;
if (e.DisplayText == "") return;
if (e.DisplayText.Length <= 10) return;
if (e.RowHandle < 0 || e.RowHandle > 1000) return;
DataRow row = gridView1.GetDataRow(e.RowHandle);
if (row == null) return;
if (row["Field"].ToString() == "") return;
int Fieldid = Convert.ToInt32(row["Field"]);
DataRow dr = proAttFilter.GetFieldInfo1(Fieldid);
if (dr == null) return;
string DataType = dr["FieldType"].ToString();
if (DataType != ConstDataType.CData) return;
e.DisplayText = e.DisplayText.Remove(10);
//MessageBox.Show(e.DisplayText);
}
private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
{
DataRow row = gridView1.GetDataRow(e.RowHandle);
row["relation"] = "=";
row["logicSym"] = "and";
row["UserIsVisible"] = 1;
}
private void gridControl1_EmbeddedNavigator_ButtonClick(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
{
return;
if (e.Button.ButtonType.ToString() != "Remove") return;
DevExpress.XtraGrid.GridControlNavigator Nav = (DevExpress.XtraGrid.GridControlNavigator)sender;
int iPos = Nav.NavigatableControl.Position;
if (iPos < 0) return;
DataView view = (DataView)gridView1.DataSource;
if (view == null) return;
DataTable dt = (DataTable)view.Table;
if (dt == null) return;
dt.Rows.RemoveAt(iPos);
}
private void lookUpEdit1_EditValueChanged(object sender, EventArgs e)
{
LoadFieldSetInfo();
FillGroupField(comboBox_groupObj2); //处理次分组字段(属性字段)
listBox_GroupItem2.Items.Clear();
if (comboBox_GroupType.SelectedIndex == 1)//主分组字段也是属性分组
{
FillGroupField(comboBox_GroupObj1); //处理次分组字段
listBox_GroupItem1.Items.Clear();
}
//处理统计项目
StatItem.LoadStatItemTable();
gridControl1.EmbeddedNavigator.Refresh();
gridControl2.EmbeddedNavigator.Refresh();
}
private void comboBox_GroupType_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox_GroupType.SelectedIndex == 0)//分组类型为地图
{
FillGroupObj1(true);
}
else FillGroupObj1(false);
listBox_GroupItem1.Items.Clear();
MainGrouList.Clear();
}
private void btnSelect1_Click(object sender, EventArgs e)//选择主分组的分组目录
{
if (comboBox_GroupType.SelectedIndex == 0)//分组类型为地图
{
frmSelectXXQHbyATT frm = new frmSelectXXQHbyATT();
frm.mapControl = m_MapControl;
frm.OleDbConn = m_OleDbConn;
frm.iLevel = comboBox_GroupObj1.SelectedIndex + 1;
frm.FirstLayer = XXQH_TYPE.CPROV;// "省级行政区";
frm.SecondLayer = XXQH_TYPE.CDIST;// "地级行政区";
frm.ThirdLayer = XXQH_TYPE.CCNTY;// "县级行政区";
frm.FirstKeyField = "PROV_CODE";
frm.FirstNameField = "name";
frm.SecondKeyField = "DIST_CODE";
frm.SecondNameField = "name";
frm.ThirdKeyField = "CNTY_CODE";
frm.ThirdNameField = "name";
if (ProvCode!=null && ProvCode != "") frm.ProvCode = ProvCode;
////frm.PrivCode = "110000";////通过这里来设置权限
//设置以前的选择
frm.ShowDialog(this);
if (!frm.IsOK) return;
//保存设置
frm.SaveSel(listBox_GroupItem1);
frm.SaveSel(MainGrouList);//保存编码
}
else
{
if (proAttFilter == null) return;
if (comboBox_GroupObj1.SelectedItem.ToString() == "") return;//comboBox_GroupObj1
string dict = proAttFilter.GetFieldDICT(comboBox_GroupObj1.SelectedItem.ToString());
frmSelectDictItem frm = new frmSelectDictItem();
frm.OleDbConn = m_OleDbConn;
frm.DICT = dict;
frm.ShowDialog(this);
if (!frm.IsOK) return;
frm.SaveSel(listBox_GroupItem1);//保存到界面
frm.SaveSel(MainGrouList);//保存编码
}
}
private void comboBox_groupObj2_SelectedIndexChanged(object sender, EventArgs e)
{
listBox_GroupItem2.Items.Clear();
SecondGroupList.Clear();
}
private void comboBox_GroupObj1_SelectedIndexChanged(object sender, EventArgs e)
{
listBox_GroupItem1.Items.Clear();
MainGrouList.Clear();
}
private void btnSelect2_Click(object sender, EventArgs e)
{
if (proAttFilter == null) return;
if (comboBox_groupObj2.SelectedItem==null || comboBox_groupObj2.SelectedItem.ToString() == "") return;//次分组对象
string dict = proAttFilter.GetFieldDICT(comboBox_groupObj2.SelectedItem.ToString());
frmSelectDictItem frm = new frmSelectDictItem();
frm.OleDbConn = m_OleDbConn;
frm.DICT = dict;
frm.ShowDialog(this);
if (!frm.IsOK) return;
frm.SaveSel(listBox_GroupItem2);//保存到界面
frm.SaveSel(SecondGroupList);//保存编码
}
private void splitterControl1_SplitterMoved(object sender, SplitterEventArgs e)
{
}
private void checkBox_AttFilter_CheckedChanged(object sender, EventArgs e)
{
gridControl1.Enabled = checkBox_AttFilter.Checked;
}
private void barButtonItem_Stat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)//开始统计
{
gridControl1.EmbeddedNavigator.Buttons.EndEdit.DoClick();
gridControl2.EmbeddedNavigator.Buttons.EndEdit.DoClick();
if (listBox_GroupItem1.Items.Count == 0)
{
MessageBox.Show("请选择行政区划!");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -