using SuperMap.Analyst.NetworkAnalyst;
using SuperMap.Data;
using SuperMap.Mapping;
using SuperMap.Plot;
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace WWPipeLine.MapBasic.Results
{
public class RWWithDataGridView : ResultWindow
{
private Sunny.UI.UIDataGridView m_DataGridView;
private Layer m_LayerSelect = null;
private GeoPoint markPoint = null;
private int Timertag = 1;
private Timer TimerM = new Timer();
public RWWithDataGridView() : base()
{
m_DataGridView = new Sunny.UI.UIDataGridView();
this.Controls.Add(m_DataGridView);
m_DataGridView.CellMouseDoubleClick += DataGridView_CellMouseDoubleClick;
CreateExportExcelButton();
uiSymbolButtonExportToExcel.Click += UiSymbolButtonExportToExcel_Click;
TimerM.Interval = 300;
TimerM.Tick += TimerM_Tick;
}
private void TimerM_Tick(object sender, EventArgs e)
{
if (Timertag == 6)
{
TimerM.Stop();
TimerM.Enabled = false;
Timertag = 1;
int index = ComsStatic.MapControl.Map.TrackingLayer.IndexOf("DoInterestPoint");
if (index > -1) ComsStatic.MapControl.Map.TrackingLayer.Remove(index);
ComsStatic.MapControl.Map.RefreshTrackingLayer();
return;
}
else if (Timertag % 2 == 1 && markPoint != null)
{
ComsStatic.MapControl.Map.TrackingLayer.Add(markPoint, "DoInterestPoint");
}
else //if (Timertag % 2 == 0)
{
int index = ComsStatic.MapControl.Map.TrackingLayer.IndexOf("DoInterestPoint");
if (index > -1) ComsStatic.MapControl.Map.TrackingLayer.Remove(index);
}
Timertag++;
ComsStatic.MapControl.Map.RefreshTrackingLayer();
}
//导出
private void UiSymbolButtonExportToExcel_Click(object sender, EventArgs e)
{
ExportToExcel(this.m_DataGridView);
}
///
/// 鼠标双击
///
///
///
protected void DataGridView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (m_LayerSelect is null) return;
if (m_DataGridView.SelectedRows == null || m_DataGridView.SelectedRows.Count != 1) return;//选择不是一行
int smid = ComsStatic.StringToInt(m_DataGridView.SelectedRows[0].Cells["smid"].Value);
if (smid == 0) return;
//var fs = (m_LayerSelect.Dataset as DatasetVector).GetAllFeatures();
//if (!fs.ContainsKey(smid)) return;
//Geometry geoxy = fs[smid].GetGeometry();
Geometry geoxy = (m_LayerSelect.Dataset as DatasetVector).Query(new int[] { smid }, CursorType.Static).GetGeometry();
ComsStatic.MapControl.Map.Center = geoxy.InnerPoint;
markPoint = new GeoPoint { X = geoxy.InnerPoint.X, Y = geoxy.InnerPoint.Y, Style = ComsStatic.geoStyle_Red_Mark5mm };
TimerM.Enabled = true; TimerM.Start();
ComsStatic.MapControl.Map.Refresh();
}
public override void ShowData(object data)
{
if (data == null)
{
DataTable dt = new DataTable();
dt.Columns.Add("执行结果");
DataRow dr = dt.NewRow();
dr[0] = "查询无结果";
dt.Rows.Add(dr);
}
else if (data is DataTable)
{
var dt = data as DataTable;
foreach (Layer lyr in ComsStatic.MapLayers)
{
if (lyr.Name.Contains(dt.TableName) || lyr.Caption.Contains(dt.TableName))
{
m_LayerSelect = lyr; break;
}
}
if (System.Text.RegularExpressions.Regex.IsMatch(dt.TableName?.ToString(), @"[\u4e00-\u9fa5]"))
this.m_DataGridView.Tag = dt.TableName?.ToString();
else
this.m_DataGridView.Tag = base.Text;
ComsStatic.setUIDataGridView(m_DataGridView, dt);
}
else
{
ComsStatic.ShowErrorLog("需要的参数为DataTable", string.Format("RWWithDataGridView中data的数据类型是{0}", data.GetType()));
throw new ArgumentException("需要的参数为DataTable");
}
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// RWWithDataGridView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "RWWithDataGridView";
this.ResumeLayout(false);
}
}
}