using System; using System.Data; using System.Data.OracleClient; using System.Drawing; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; using GeoScene.Globe; namespace Cyberpipe.EMS_Forms { public partial class Form_EventManager : Office2007Form { private GSOGlobeControl globeControl1; // DataTable dt = new DataTable(); OracleConnection conn; int maxPageIndex = 20; int rows; public static bool IS_OPEN; public Form_EventManager(GSOGlobeControl globeControl1) { this.globeControl1 = globeControl1; globeControl1.Globe.MemoryLayer.ObjectMinVisiblePixelSize = -1; InitializeComponent(); winGridViewPager1.OnPageChanged += winGridViewPager1_OnPageChanged; winGridViewPager1.OnAddNew += winGridViewPager1_OnEditSelected; //属性编辑 winGridViewPager1.OnEditSelected += winGridViewPager1_OnAddNew;//右键定位 winGridViewPager1.OnStartExport += pager1_OnStartExport; winGridViewPager1.OnEndExport += 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 { dateTimePicker_end.Value = DateTime.Now; 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); } conn.Close(); if (Utility.isNeedLogin && !Utility.userRole.Equals("事件编辑")) { winGridViewPager1.dataGridView1.ContextMenuStrip.Items[2].Visible = false; } IS_OPEN = true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// 初始化分页表格 /// </summary> private void initlizeDatagrid() { //控制表格显示的列,以及每一列要显示的列名 winGridViewPager1.Dock = DockStyle.Fill; winGridViewPager1.dataGridView1.Dock = DockStyle.Fill; winGridViewPager1.AddColumnAlias("上报时间", "上报时间"); winGridViewPager1.AddColumnAlias("编号", "编号"); winGridViewPager1.AddColumnAlias("事件描述", "事件描述"); winGridViewPager1.AddColumnAlias("纬度", "纬度"); winGridViewPager1.AddColumnAlias("事件地点", "事件地点"); winGridViewPager1.AddColumnAlias("经度", "经度"); winGridViewPager1.AddColumnAlias("上报人员", "上报人员"); winGridViewPager1.AddColumnAlias("人员ID", "人员ID"); winGridViewPager1.AddColumnAlias("任务编号", "任务编号"); winGridViewPager1.AddColumnAlias("处理结果", "处理结果"); winGridViewPager1.AddColumnAlias("处理状态", "处理状态"); 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; //数据铺满表格 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]; 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 { WindowState = FormWindowState.Minimized; globeControl1.Globe.MemoryLayer.RemoveAllFeature(); 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, "错误", 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); Form_EventResult form = new Form_EventResult(dbId, result); form.refresh += LoadData;//改变值的事件 form.ShowDialog(); } catch (Exception ex) { MessageBox.Show("编辑失败:" + ex, "错误", 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 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, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }