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

📄 ucunivstat.cs

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

      SaveStatParam();
      ProcStat.StatEnv = StatEnv;
      ProcStat.Stat();
      clsProcGridExport ProcGridExport = new clsProcGridExport();
      ProcGridExport.StatEnv = StatEnv;
      ProcGridExport.StatTable = ProcStat.StatTable;
      ProcGridExport.gridControl1 = gridControl3;
      ProcGridExport.gridView1 = gridView3;
      ProcGridExport.advBandedGridView2 =StatBandeExport.advBandedGridView1;
      ProcGridExport.gridControl2 = StatBandeExport.gridControl1;
      ProcGridExport.ExportGrid();
      if (StatEnv.SecondGroupField != "" && StatEnv.SecondGroupList.Count > 0)
      {
        StatBandeExport.Visible = true;
        gridControl3.Visible = false;
        StatBandeExport.gridControl1.DataSource = ProcStat.StatTable;
      }
      else
      {
        StatBandeExport.Visible = false;
        gridControl3.Visible = true;
        gridControl3.Update();
        //gridControl3.DataSource = ProcStat.StatTable;
      }
      xtraTabControl2.SelectedTabPageIndex = 1;

    }
    private void barButtonItem_Export_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      if (saveFileDialog1.ShowDialog() != DialogResult.OK) return;

      if (StatEnv.SecondGroupField != "" && StatEnv.SecondGroupList.Count > 0)
      {
        StatBandeExport.advBandedGridView1.ExportToXls(saveFileDialog1.FileName, true);
      }
      else
      {
        gridView3.ExportToXls(saveFileDialog1.FileName, true);
      }
    }
    private void barButtonItem_Exit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      Form frm = this.Parent as Form;
      if (frm != null) frm.Close();
    }
    private void barButtonItemMapExportPie_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      if (StatEnv.MainGroupType != 0)
      {
        MessageBox.Show("不是地图统计,不能生成专题图!");
        return;
      }
      if (ProcStat.StatTable == null || ProcStat.StatTable.workTable == null || ProcStat.StatTable.workTable.Rows.Count == 0)
      {
        MessageBox.Show("统计表为空,不能生成专题图!请先执行统计!");
        return;
      }
      clsCreateStatFeatureLayer StatLayer = new clsCreateStatFeatureLayer();
      StatLayer.StatEnv = StatEnv;
      StatLayer.StatTable = ProcStat.StatTable;
      IFeatureClass pFClass = StatLayer.CreateLayer();
      StatLayer.FillStatTable(pFClass);
      if(pFClass == null) return ;

	    IFeatureLayer pFlayer = new FeatureLayerClass();
	    pFlayer.FeatureClass =pFClass;
      
      clsRenderStatLayer Render = new clsRenderStatLayer();
      Render.StatEnv = StatEnv;
      Render.StatTable = ProcStat.StatTable;
      Render.PieRenderer(pFlayer);
      pFlayer.Name = StatEnv.StatInstName;
      int  oldFLayerIndex = clsGISPub.FindLayerIndex(m_MapControl.Map,StatEnv.StatInstName);
      if (oldFLayerIndex > -1) m_MapControl.DeleteLayer(oldFLayerIndex);
      m_MapControl.AddLayer(pFlayer, 0);
      Form frm = this.Parent as Form;
      if (frm != null)
      {
        frm.WindowState = FormWindowState.Minimized;
      }

    }

    private void barButtonItemMapExport2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
      if (StatEnv.MainGroupType != 0)
      {
        MessageBox.Show("不是地图统计,不能生成专题图!");
        return;
      }
      if (ProcStat.StatTable == null || ProcStat.StatTable.workTable == null || ProcStat.StatTable.workTable.Rows.Count == 0)
      {
        MessageBox.Show("统计表为空,不能生成专题图!请先执行统计!");
        return;
      }

      clsCreateStatFeatureLayer StatLayer = new clsCreateStatFeatureLayer();
      StatLayer.StatEnv = StatEnv;
      StatLayer.StatTable = ProcStat.StatTable;
      IFeatureClass pFClass = StatLayer.CreateLayer();
      StatLayer.FillStatTable(pFClass);
      if (pFClass == null) return;

      IFeatureLayer pFlayer = new FeatureLayerClass();
      pFlayer.FeatureClass = pFClass;
      IMap pMap = m_MapControl.Map;
      ISpatialReference pSRef;
      pSRef = pMap.SpatialReference;
      pFlayer.SpatialReference = pSRef;

      clsRenderStatLayer Render = new clsRenderStatLayer();
      Render.StatEnv = StatEnv;
      Render.StatTable = ProcStat.StatTable;
      Render.BarRenderer(pFlayer);
      pFlayer.Name = StatEnv.StatInstName;
      int oldFLayerIndex = clsGISPub.FindLayerIndex(m_MapControl.Map, StatEnv.StatInstName);
      if (oldFLayerIndex > -1) m_MapControl.DeleteLayer(oldFLayerIndex);
      m_MapControl.AddLayer(pFlayer, 0);
      Form frm = this.Parent as Form;
      if (frm != null)
      {
        frm.WindowState = FormWindowState.Minimized;
      }

    }

    #endregion


    #region "界面处理辅助函数"
    private void LoadStatInst(int StatID)
    {
      if (m_StatInstTable == null ) return;
      StatEnv.StatID = StatID;
      DataRow row;
      DataRow[] drs = m_StatInstTable.Select("StatInstID=" + StatID.ToString());
      if (drs == null || drs.Length == 0) return;
      row = drs[0];
      StatEnv.AbstractStatID = Convert.ToInt32(row["AbstractStatID"]);
      StatEnv.StatInstName = row["StatInstName"].ToString();
      object obj;
      obj = row["AttWinVisible"];
      if (obj.ToString() == "") StatEnv.AttWinVisible = false;
      else StatEnv.AttWinVisible = Convert.ToBoolean(obj);
      obj = row["GroupItemVisible"];
      if (obj.ToString() == "") StatEnv.GroupItemVisible = false;
      else StatEnv.GroupItemVisible  = Convert.ToBoolean(obj);
      obj = row["StatItemVsisible"];
      if (obj.ToString() == "") StatEnv.StatItemVsisible = false;
      else StatEnv.StatItemVsisible = Convert.ToBoolean(obj);
      //填充属性过滤表============================================================
      InitAttFilter(StatEnv.StatID, StatEnv.AbstractStatID);
      //处理分组类型===============================================================
      if (row["MainGroupType"].ToString() == "") comboBox_GroupType.SelectedIndex = 0;//地图分组
      else comboBox_GroupType.SelectedIndex = Convert.ToInt32(row["MainGroupType"]);//属性分组
      //填充主分组字段
      if (comboBox_GroupType.SelectedIndex == 0) FillGroupObj1(true);//填充图层
      else FillGroupObj1(false);//填充字段

      comboBox_GroupObj1.SelectedItem = row["MainGroupItem"];//设置当前选择
      FillGroupField(comboBox_groupObj2); //处理次分组字段
      comboBox_groupObj2.SelectedItem = row["SecondGroupField"].ToString();//设置当前选择
      InitGroupObj(Convert.ToInt32(StatEnv.StatID)); //装载分组项
      //处理统计字段============================================================
      StatItem.LoadStatItemTable();
      gridControl2.EmbeddedNavigator.Refresh();
    }
    private void ProcWinSize()
    {
      panelControl4.Visible = StatEnv.AttWinVisible;
      //panelControl1.Visible = StatEnv.GroupItemVisible;//主分组
      xtraTabPage2.PageVisible = StatEnv.GroupItemVisible;//主分组

      panelControl2.Visible = StatEnv.StatItemVsisible;
      if ((panelControl4.Visible == false || this.Parent != null)
        && StatEnv.GroupItemVisible == true && StatEnv.AttWinVisible == false) this.Parent.Height = 285;
      if (StatEnv.AttWinVisible == false && StatEnv.GroupItemVisible == false)
      {
        panelControl3.Controls.Remove(splitterControl1);
        panelControl3.Dock = DockStyle.Fill;
        panelControl4.Dock = DockStyle.None;
        panelControl4.Height = 1;
          this.ResumeLayout();
      }
      if (StatEnv.AttWinVisible == false && StatEnv.GroupItemVisible == true && StatEnv.StatItemVsisible==true)
      {
        panelControl3.Dock = DockStyle.Fill;
      }

    }//处理哪些条件窗口可见
    private void SetFieldValueSelector(DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e, int Fieldid)
    {
      DataRow dr = proAttFilter.GetFieldInfo1(Fieldid);
      if (dr == null) return;
      string DataType = dr["FieldType"].ToString();
      string SQL = dr["DICT"].ToString();
      if (DataType == ConstDataType.CData)
      {
        e.RepositoryItem = repositoryItemDateEdit_value_date1;
      }
      else if (DataType == ConstDataType.CInt)
      {
        e.RepositoryItem = repositoryItemSpinEdit_value_int;
      }
      else if (DataType == ConstDataType.CFloat)
      {
        e.RepositoryItem = repositoryItemTextEdit_value_float;
      }
      else if (DataType == ConstDataType.CString && SQL == "")
      {
        e.RepositoryItem = repositoryItemTextEdit_value_text;
      }
      else if (DataType == ConstDataType.CString && SQL != "")
      {
        e.RepositoryItem = null;
        e.RepositoryItem = proAttFilter.GetLookupEdit(Fieldid);
      }
    }
    private void SetLookupData()
    {
      if (gridView1.FocusedRowHandle < 0 || gridView1.FocusedRowHandle > 1000) return;
      DataRow row = gridView1.GetDataRow(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;
    }
    #endregion

    #region"以下函数处理统计分组"
    private void InitGroupObj(int StatInstID)
    {
      clsProcGroupItem ProGItem = new clsProcGroupItem();
      ProGItem.m_nStatInstID = StatInstID;
      ProGItem.OleDbConn = m_OleDbConn;
      ProGItem.MainGroupContent = this.listBox_GroupItem1;
      ProGItem.SecondGroupContent = this.listBox_GroupItem2;
      ProGItem.LoadGroupContent();
    }
    //填充主分组项,当是地图上,填充为图层;当是属性列表时,填充的是分组字段
    private void FillGroupObj1(bool bMap)
    {
      comboBox_GroupObj1.Items.Clear();
      if (bMap)
      {
        comboBox_GroupObj1.Items.Add(XXQH_TYPE.CPROV);
        comboBox_GroupObj1.Items.Add(XXQH_TYPE.CDIST);
        comboBox_GroupObj1.Items.Add(XXQH_TYPE.CCNTY);
      }
      else
      {
        FillGroupField(comboBox_GroupObj1);
      }
    }
    private void FillGroupField(ListBox GroupItemListBox)
    {
      if (proAttFilter == null || GroupItemListBox == null) return;
      DataTable dt = proAttFilter.GetFieldInfoTable();
      if (dt == null) return;
      DataRow[] drs = dt.Select("IsGroup = 1");//分组字典必须是词典
      GroupItemListBox.Items.Clear();
      foreach (DataRow dr in drs)
      {
        if (dr["DICT"].ToString().Trim() == "")
        {
          MessageBox.Show("分组字段必须是字典!配置错误!该字段被忽略!");
          continue;
        }
        GroupItemListBox.Items.Add(dr["FieldAias"].ToString());
      }
    }
    private void FillGroupField(ComboBox GroupItemComboBox)
    {
      if (proAttFilter == null || GroupItemComboBox == null) return;
      DataTable dt = proAttFilter.GetFieldInfoTable();
      if (dt == null) return;
      DataRow[] drs = dt.Select("IsGroup = 1");//分组字典必须是词典
      GroupItemComboBox.Items.Clear();
      foreach (DataRow dr in drs)
      {
        if (dr["DICT"].ToString().Trim() == "")
        {
          MessageBox.Show("分组字段必须是字典!配置错误!该字段被忽略!");
          continue;
        }
        GroupItemComboBox.Items.Add(dr["FieldAias"].ToString());
      }
    }
    #endregion

    #region "获取统计参数"
    private void SaveStatParam()
    {
     if (StatEnv == null || StatItem == null || proAttFilter == null) return;
      gridControl1.EmbeddedNavigator.Buttons.EndEdit.DoClick();
      gridControl2.EmbeddedNavigator.Buttons.EndEdit.DoClick();

      StatEnv.MapControl = m_MapControl;
      StatEnv.DbConn = m_OleDbConn;

      StatEnv.MainGroupType = comboBox_GroupType.SelectedIndex;////分组类型,0为地图,1为属性
      StatEnv.MainGroupItem = comboBox_GroupObj1.SelectedItem.ToString();//主分组对象,如果为地图,则是图层,如果为属性,则为字段
      if (comboBox_groupObj2.SelectedItem == null) StatEnv.SecondGroupField = "";
      else  StatEnv.SecondGroupField = comboBox_groupObj2.SelectedItem.ToString();//次分组对象,为字段
      StatEnv.StatItemTable = StatItem.m_StatItemTable;//统计项目表
      StatEnv.ProcAttFilter = proAttFilter;//字段处理对象

      foreach (object var in listBox_GroupItem1.Items)//保存主分组
      {
        StatEnv.MainGrouList.Add(var);
      }
      foreach (object var in listBox_GroupItem2.Items)//保存次分组
      {
        StatEnv.SecondGroupList.Add(var);
      }
    }
    #endregion




  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -