using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using GeoScene.Data; using GeoScene.Engine; using GeoScene.Globe; using DevComponents.DotNetBar; using System.Data.OracleClient; using WHC.Pager.WinControl; namespace Cyberpipe.EMS_Forms { public partial class Form_EventManager : Office2007Form { private GSOGlobeControl globeControl1; DataTable dt = new DataTable(); OracleConnection conn; int maxPageIndex = 20; int rows = 0; public static bool IS_OPEN = false; public Form_EventManager(GSOGlobeControl globeControl1) { this.globeControl1 = globeControl1; globeControl1.Globe.MemoryLayer.ObjectMinVisiblePixelSize = -1; InitializeComponent(); winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged); this.winGridViewPager1.OnAddNew += new EventHandler(winGridViewPager1_OnEditSelected); //属性编辑 this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnAddNew);//右键定位 this.winGridViewPager1.OnStartExport += new EventHandler(pager1_OnStartExport); this.winGridViewPager1.OnEndExport += new EventHandler(pager1_OnEndExport); //this.winGridViewPager1.ExportCurrent += new ExportCurrentEventHandler(pager1_ExportCurrent); //this.winGridViewPager1.ExportAll += new ExportAllEventHandler(pager1_ExportAll); winGridViewPager1.dataGridView1.MultiSelect = false; } private void Form_EventManager_Load(object sender, EventArgs e) { try { this.dateTimePicker_end.Value = DateTime.Now; this.dateTimePicker_start.Value = DateTime.Now.AddDays(-6); LoadData(); conn = OledbHelper.sqlConnection(); string com = "select * from PATROLER"; conn.Open(); OracleCommand cmd = new OracleCommand(com, conn); OracleDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { String name = Convert.ToString(dr["USERNAME"]); comboBox_name.Items.Add(name); } dr.Close(); conn.Close(); IS_OPEN = true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// 初始化分页表格 /// </summary> private void initlizeDatagrid() { //控制表格显示的列,以及每一列要显示的列名 this.winGridViewPager1.Dock = DockStyle.Fill; this.winGridViewPager1.dataGridView1.Dock = DockStyle.Fill; this.winGridViewPager1.AddColumnAlias("上报时间", "上报时间"); this.winGridViewPager1.AddColumnAlias("编号", "编号"); this.winGridViewPager1.AddColumnAlias("事件描述", "事件描述"); this.winGridViewPager1.AddColumnAlias("纬度", "纬度"); this.winGridViewPager1.AddColumnAlias("事件地点", "事件地点"); this.winGridViewPager1.AddColumnAlias("经度", "经度"); this.winGridViewPager1.AddColumnAlias("上报人员", "上报人员"); this.winGridViewPager1.AddColumnAlias("人员ID", "人员ID"); this.winGridViewPager1.AddColumnAlias("任务编号", "任务编号"); this.winGridViewPager1.AddColumnAlias("处理结果", "处理结果"); this.winGridViewPager1.AddColumnAlias("处理状态", "处理状态"); this.winGridViewPager1.DisplayColumns = "上报时间,事件描述,事件地点,上报人员,任务编号,处理结果,处理状态"; winGridViewPager1.BackColor = Color.LightCyan;//间隔颜色 //隐藏右键功能按钮 winGridViewPager1.dataGridView1.ContextMenuStrip.Items[3].Visible = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Items[4].Visible = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Items[5].Visible = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Items[6].Visible = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Items[7].Visible = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Items[1].Text = "结果编辑"; winGridViewPager1.dataGridView1.ContextMenuStrip.Items[2].Text = "查看位置"; //右键菜单宽度 winGridViewPager1.dataGridView1.ContextMenuStrip.AutoSize = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Width = 150; //数据铺满表格 this.winGridViewPager1.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; //控制间隔的颜色 winGridViewPager1.BackColor = Color.LightCyan;//间隔颜色 //控制每页显示的最大数据量 winGridViewPager1.PagerInfo.RecordCount = rows; winGridViewPager1.PagerInfo.PageSize = maxPageIndex; winGridViewPager1.dataGridView1.Refresh(); //winGridViewPager1.Controls.RemoveAt(1); } void pager1_OnEndExport(object sender, EventArgs e) { } void pager1_OnStartExport(object sender, EventArgs e) { int pageIndex = winGridViewPager1.PagerInfo.CurrenetPageIndex; string where = GetSql(); DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, where).Tables[0]; this.winGridViewPager1.AllToExport = table; } /// <summary> /// 右键定位 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void winGridViewPager1_OnAddNew(object sender, EventArgs e) { DataGridView grid = sender as DataGridView; if (grid != null && grid.SelectedRows.Count > 0) { DataGridViewRow row = grid.SelectedRows[0]; try { this.WindowState = FormWindowState.Minimized; globeControl1.Globe.MemoryLayer.RemoveAllFeature(); this.WindowState = FormWindowState.Minimized; double x = Convert.ToDouble(row.Cells["经度"].Value); double y = Convert.ToDouble(row.Cells["纬度"].Value); string username = Convert.ToString(row.Cells["上报人员"].Value); string Atime = Convert.ToString(row.Cells["上报时间"].Value); string location = Convert.ToString(row.Cells["事件地点"].Value); string descp = Convert.ToString(row.Cells["事件描述"].Value); /////////////////////////////////////// /*******设置飞行与创建模型******/ EnumAltitudeMode altmode = EnumAltitudeMode.Absolute; GSOPoint3d p = new GSOPoint3d(); p.X = x; p.Y = y; //p.X = 120.608; //p.Y = 31.1907; p.Z = 0; GSOGeoModel model = new GSOGeoModel(); string filepath = Application.StartupPath + "/EMSgcm/小旗子/hongqi/hongqi.gcm"; model.FilePath = filepath; model.Position = p; model.AltitudeMode = EnumAltitudeMode.Absolute; GSOFeature f = new GSOFeature(); f.Geometry = model; f.Name = "事件:" + Atime; //double s = 0.1; //f.Geometry.Scale(s, s, s); GSOFeature newFeature = globeControl1.Globe.MemoryLayer.AddFeature(f); GSOLabel label = new GSOLabel(); label.Text = "上报人员:" + username + "\r\n" + "上报时间:" + Atime + "\r\n" + "上报地点:" + location + "\r\n" + "事件描述:" + descp; label.Style = new GSOLabelStyle(); label.Style.Opaque = 0.8; //设置标注的透明度,取值区间是0-1 label.Style.TracktionLineType = EnumTracktionLineType.Solid; label.Style.TextStyle.FontHeight = 20; label.Style.TextStyle.FontName = "黑体"; label.Style.TractionLineEndPos = new GSOPoint2d(80, 60); newFeature.Label = label; globeControl1.Globe.JumpToFeature(newFeature, 3000); } catch (Exception ex) { MessageBox.Show("事件定位失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("没有选择记录", "提示"); } } /// <summary> /// 编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void winGridViewPager1_OnEditSelected(object sender, EventArgs e) { DataGridView grid = sender as DataGridView; if (grid != null && grid.SelectedRows.Count > 0) { DataGridViewRow row = grid.SelectedRows[0]; try { int dbId = Convert.ToInt32(row.Cells["编号"].Value); string result = Convert.ToString(row.Cells["处理结果"].Value); EMS_Forms.Form_EventResult form = new Form_EventResult(dbId, result); form.refresh += new Form_EventResult.Handle(LoadData);//改变值的事件 form.ShowDialog(); } catch (Exception ex) { MessageBox.Show("编辑失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("没有选择记录", "提示"); } } /// <summary> /// 页面刷新 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void winGridViewPager1_OnPageChanged(object sender, EventArgs e) { LoadData(); } private void LoadData() { if (dateTimePicker_start.Value != null && dateTimePicker_end.Value != null) { int compare = DateTime.Compare(dateTimePicker_start.Value, dateTimePicker_end.Value); if (compare == 1) { MessageBox.Show("起始时间不能大于终止时间,请重新设置!", "提示"); return; } } int pageIndex = winGridViewPager1.PagerInfo.CurrenetPageIndex; string sqlData = GetSql(pageIndex); initlizeDatagrid(); DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sqlData).Tables[0]; winGridViewPager1.DataSource = table.DefaultView; if (table.Rows.Count == 0) { MessageBox.Show("没有找到任何数据!", "提示"); } for (int i = 0; i < table.Rows.Count; i++) { if (winGridViewPager1.dataGridView1.Rows[i].Cells["处理结果"].Value != null && !(winGridViewPager1.dataGridView1.Rows[i].Cells["处理结果"].Value.ToString().Trim().Equals(""))) { winGridViewPager1.dataGridView1.Rows[i].Cells["处理状态"].Value = "已处理"; } else { winGridViewPager1.dataGridView1.Rows[i].Cells["处理状态"].Value = "未处理"; } } winGridViewPager1.Refresh(); } private void LoadData(int pageIndex) { if (dateTimePicker_start.Value != null && dateTimePicker_end.Value != null) { int compare = DateTime.Compare(dateTimePicker_start.Value, dateTimePicker_end.Value); if (compare == 1) { MessageBox.Show("起始时间不能大于终止时间,请重新设置!", "提示"); return ; } } string sqlData = GetSql(pageIndex); initlizeDatagrid(); DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sqlData).Tables[0]; winGridViewPager1.DataSource = table.DefaultView; if (table.Rows.Count == 0) { MessageBox.Show("没有找到任何数据!", "提示"); } for (int i = 0; i < table.Rows.Count; i++) { if (winGridViewPager1.dataGridView1.Rows[i].Cells["处理结果"].Value != null && !(winGridViewPager1.dataGridView1.Rows[i].Cells["处理结果"].Value.ToString().Trim().Equals(""))) { winGridViewPager1.dataGridView1.Rows[i].Cells["处理状态"].Value = "已处理"; } else { winGridViewPager1.dataGridView1.Rows[i].Cells["处理状态"].Value = "未处理"; } } winGridViewPager1.Refresh(); } private string GetSql() { string sqlCount = "select count(*) from ACCIDENT where 1=1"; string sqlData = "select ACCIDENTTIME as 上报时间,DBID as 编号,DESCRIBE as 事件描述,"+ "LATITUDE as 纬度,LOCALE as 事件地点,LONGITUDE as 经度,PATROLERNAME 上报人员,"+ "PATROLER_ID as 人员ID,TASK_ID as 任务编号,RESULT as 处理结果,'' as 处理状态 " + "from (select t.*,rownum row_num from ACCIDENT t order by DBID)b " + " where 1=1"; rows = int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sqlCount).ToString()); return sqlData; } private string GetSql(int pageIndex) { int minPage = (pageIndex - 1) * maxPageIndex + 1; int maxPage = pageIndex * maxPageIndex; string userName = comboBox_name.Text.ToString(); string startTime = dateTimePicker_start.Value.ToString("yyyy-MM-dd"); string endTime = dateTimePicker_end.Value.AddDays(1).ToString("yyyy-MM-dd"); string sqlCount = "select count(*) from ACCIDENT where 1=1"; string sqlData = "select ACCIDENTTIME as 上报时间,DBID as 编号,DESCRIBE as 事件描述," + "LATITUDE as 纬度,LOCALE as 事件地点,LONGITUDE as 经度,PATROLERNAME 上报人员," + "PATROLER_ID as 人员ID,TASK_ID as 任务编号,RESULT as 处理结果,'' as 处理状态 " + "from (select t.*,rownum row_num from ACCIDENT t where 1=1"; if (!String.IsNullOrEmpty(comboBox_name.Text.Trim())) { sqlCount += " and PATROLERNAME='" + comboBox_name.Text.Trim() + "' "; sqlData += " and PATROLERNAME='" + comboBox_name.Text.Trim() + "' "; } if (dateTimePicker_start.Value != null) { sqlCount += "and ACCIDENTTIME>=to_date('" + dateTimePicker_start.Value.ToShortDateString() + "','yyyy-MM-dd') "; sqlData += "and ACCIDENTTIME>=to_date('" + dateTimePicker_start.Value.ToShortDateString() + "','yyyy-MM-dd') "; } if (dateTimePicker_end.Value != null) { DateTime time = dateTimePicker_end.Value; time = time.AddDays(1); sqlCount += "and ACCIDENTTIME<=to_date('" + time.ToShortDateString() + "','yyyy-MM-dd') "; sqlData += "and ACCIDENTTIME<=to_date('" + time.ToShortDateString() + "','yyyy-MM-dd') "; } sqlData += " order by DBID desc)b " + "where(b.row_num between " + minPage + " and " + maxPage + ")"; rows = int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sqlCount).ToString()); return sqlData; } private void Form_EventManager_FormClosing(object sender, FormClosingEventArgs e) { globeControl1.Globe.MemoryLayer.RemoveAllFeature(); IS_OPEN = false; } private void buttonX_search_Click(object sender, EventArgs e) { try { LoadData(1); } catch (Exception ex) { MessageBox.Show("查询失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }