using System; using System.Data; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Engine; using GeoScene.Globe; namespace Cyberpipe { public partial class FrmYJSHTC : Office2007Form { public GSOLayer rukuLayer; GSOGlobeControl ctl2; GSOGlobeControl ctl1; GSODataSource youDS; string selectLayerName; GSODataSource dataset; TreeView layerTree; public FrmYJSHTC(GSOGlobeControl _ctl1, GSOGlobeControl _ctl2, TreeView _layerTree) { InitializeComponent(); ctl2 = _ctl2; ctl1 = _ctl1; layerTree = _layerTree; } public FrmYJSHTC() { InitializeComponent(); } private void FrmYJSHTC_Load(object sender, EventArgs e) { AddData(""); } private void AddData(string str) { try { DataTable dt = new DataTable(); dt.Columns.Add("图层名称"); dt.Columns.Add("审核"); dt.Columns.Add("操作"); youDS = ctl2.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", Utility.sgdbuser, Utility.sgdbpwd); if (youDS.DatasetCount == 0) return; for (int i = youDS.DatasetCount - 1; i > -1; i--) { GSODataset dataset = youDS.GetDatasetAt(i); if (dataset == null || !dataset.Caption.Contains("SH")) continue; if (str == "") { DataRow row = dt.NewRow(); row[0] = dataset.Name; row[1] = "审核"; row[2] = "删除"; dt.Rows.Add(row); } else { if (dataset.Caption.Contains(str)) { DataRow row = dt.NewRow(); row[0] = dataset.Name; row[1] = "审核"; row[2] = "删除"; dt.Rows.Add(row); } } } dataGridViewX1.DataSource = dt; } catch (Exception ex) { LogError.PublishError(ex); } } private void textBoxCode_TextChanged(object sender, EventArgs e) { AddData(textBoxCode.Text); } private void dataGridViewX1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex == -1 || e.ColumnIndex == -1) return; string strLayerName = dataGridViewX1.Rows[e.RowIndex].Cells["图层名称"].Value.ToString(); if (dataGridViewX1.Columns[e.ColumnIndex].HeaderText.Equals("审核")) ShenHe(strLayerName); else if (dataGridViewX1.Columns[e.ColumnIndex].HeaderText.Equals("操作")) { deleteLayer(strLayerName); AddData(""); } } private void ShenHe(string strLayerName) { dataset = ctl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip.Trim() + "/" + Utility.sgdbname.Trim(), "", "", Utility.sgdbuser, Utility.sgdbpwd); GSODataset dt = dataset.GetDatasetByName(strLayerName); GSOFeatureDataset layer = dt as GSOFeatureDataset; if (layer == null) return; GSOLayer sourceLayer2 = ctl1.Globe.Layers.GetLayerByCaption(strLayerName); if (sourceLayer2 != null) { ctl1.Globe.Layers.Remove(sourceLayer2); } layer.Caption = layer.Name; GSOLayer layerRuku = ctl1.Globe.Layers.Add(layer); rukuLayer = layerRuku; //重新调整模型位置,这样可以保证新入库的管线也能通过调节透明度隐现 ctl1.Globe.Layers.MoveTo(0, ctl1.Globe.Layers.Count - 1); ctl1.Globe.Refresh(); DialogResult = DialogResult.OK; } /// <summary>wxl注释 /// 1.删除数据库中图层数据 /// 2.删除GlobalControl中的图层数据 /// 3.删除树形图临时图层节点下的该节点 /// 4.删除数据库中相关审核结果 /// </summary> /// <param name="str"></param> private void deleteLayer(string str) { if (MessageBox.Show("确定要删除所选中的图层吗 ?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (dataset == null) dataset =ctl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip.Trim() + "/" + Utility.sgdbname.Trim(), "", "", Utility.sgdbuser, Utility.sgdbpwd); dataset.DeleteDatasetByName(str); GSOLayer removeLayer = ctl1.Globe.Layers.GetLayerByCaption(str); if (removeLayer != null) ctl1.Globe.Layers.Remove(removeLayer); // for (int i = ctl1.Globe.Layers.Count - 1; i >= 0; i--) // { // if (ctl1.Globe.Layers[i].Caption.Equals(str)) // ctl1.Globe.Layers.Remove(ctl1.Globe.Layers[i]); // } foreach (TreeNode n in layerTree.Nodes) { if (!n.Text.Equals("临时图层")) continue; // for (int i = 0; i < n.Nodes.Count; i++) // { // if (n.Nodes[i].Text.Equals(str)) // n.Nodes[i].Remove(); // } //以后在本类中只传一个临时图层的节点,不传layertree就不需要上面的遍历了 TreeUtils.RemoveNode(n, str); } string sql = "delete from casic_audit_result where SH_LAYER = '" + str + "'"; OledbHelper.sqlExecuteNonQuery(sql); } } } }