📄 ucunivstat.cs
字号:
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 + -