using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Globe; using GeoScene.Data; using System.Collections; namespace PipeLine.Forms { public partial class FrmPaiShui2Query : Office2007Form { private GSOGlobeControl globeControl1; private DevComponents.DotNetBar.Controls.DataGridViewX dataGridViewX1; public FrmPaiShui2Query(GSOGlobeControl ctl, DevComponents.DotNetBar.Controls.DataGridViewX d) { this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; InitializeComponent(); globeControl1 = ctl; dataGridViewX1 = d; } private void btnSelPaishui_Click(object sender, EventArgs e) { try { dataGridViewX1.Visible = true; string sql = "select " + Utility.Query_Fields["排水"] + " from 排水管线"; ArrayList filters = new ArrayList(); if (combType.SelectedIndex > 0) { string sql1 = " 埋设方式='" + combType.SelectedItem.ToString() + "'"; filters.Add(sql1); } if (combMaterial.SelectedIndex > 0) { string sql2 = " 材质='" + combMaterial.SelectedItem.ToString() + "'"; filters.Add(sql2); } if (txtGuanJing.Text != "") { string sql7 = " 管径_毫米>=" + txtGuanJing.Text + ""; filters.Add(sql7); } if (txtDeep.Text != "") { string sql4 = " 起始埋深>=" + txtDeep.Text + ""; filters.Add(sql4); } if (txtDeep.Text != "") { string sql5 = " 终止埋深>=" + txtDeep.Text + ""; filters.Add(sql5); } if (combBianMa.SelectedIndex > 0) { string sql7; if (combBianMa.SelectedIndex == 1) { sql7 = " 管线编码='" + 4000 + "'"; } else if (combBianMa.SelectedIndex == 2) { sql7 = " 管线编码='" + 4100 + "'"; } else { sql7 = " 管线编码='" + 4200 + "'"; } filters.Add(sql7); } if (combBuild1.SelectedIndex > 0 && combBuild2.SelectedIndex > 0) { string sql6 = "建设年代 between '" + combBuild1.SelectedItem.ToString() + "' and '" + combBuild2.SelectedItem.ToString() + "'"; filters.Add(sql6); } string[] aa = (string[])(filters.ToArray(typeof(string))); if (aa.Length > 0) sql += " where " + string.Join(" and ", aa); DataTable table = OledbHelper.QueryTable(sql); dataGridViewX1.DataSource = table; dataGridViewX1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; this.DialogResult = DialogResult.OK; this.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void FrmPaiShui2Query_Load(object sender, EventArgs e) { dataGridViewX1.Visible = false; dataGridViewX1.ReadOnly = true; //单值查询 string sqltype = "select distinct 材质 from 排水管线"; DataTable table = OledbHelper.QueryTable(sqltype); combMaterial.Items.Add("无"); for (int i = 0; i < table.Rows.Count; i++) { DataRow dr = table.Rows[i]; string colString1 = dr[0].ToString(); if (colString1 == null || colString1.Trim() == "") continue; combMaterial.Items.Add(colString1); } string sqltype2 = "select distinct 埋设方式 from 排水管线"; DataTable table2 = OledbHelper.QueryTable(sqltype2); combType.Items.Add("无"); for (int k = 0; k < table2.Rows.Count; k++) { DataRow dr = table2.Rows[k]; string colString1 = dr[0].ToString(); if (colString1 == null || colString1.Trim() == "") continue; combType.Items.Add(colString1); } } GSOFeature feature; //当前处于选中的feature private void dataGridViewX1_MouseClick(object sender, MouseEventArgs e) { if (feature != null && feature.HighLight == true) { feature.HighLight = false; } if (e.Button == MouseButtons.Right) { DataGridView.HitTestInfo hittestinfo = dataGridViewX1.HitTest(e.X, e.Y); if (hittestinfo.RowIndex > -1) { string featureName = dataGridViewX1.Rows[hittestinfo.RowIndex].Cells[0].Value.ToString(); contextMenuStrip1.Show(dataGridViewX1, e.X, e.Y); featureName = featureName.Trim(); for (int i = 0; i < globeControl1.Globe.Layers.Count; i++) { GSOLayer layer = globeControl1.Globe.Layers[i]; if (layer.Type == EnumLayerType.FeatureLayer) { GSOFeatures features = layer.GetFeatureByName(featureName, false); for (int j = 0; j < features.Length; j++) { if (features[j].Name == featureName) { feature = features[j]; } } } } } } } private void FrmPaiShui2Query_FormClosing(object sender, FormClosingEventArgs e) { if (feature != null) { feature.HighLight = false; } } private void FlyToMenu_Click(object sender, EventArgs e) { if (feature != null) { globeControl1.Globe.FlyToFeature(feature); } } int count = 0; private void timer1_Tick(object sender, EventArgs e) { if (count < 6) { count++; if (feature != null) { if (count % 2 != 0) { feature.HighLight = true; globeControl1.Refresh(); } else { feature.HighLight = false; globeControl1.Refresh(); } } } else { timer1.Stop(); count = 0; } } private void LightMenu_Click(object sender, EventArgs e) { timer1.Start(); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } } }