⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucunivstatforpops1.cs.svn-base

📁 以构建的方式来实现对通用的查询统计
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
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 + -