Newer
Older
GHFX_REFACTOR / FrmYJSHTC.cs
xiaowei on 15 Nov 2016 5 KB 修改双屏,替换模型库
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;
                else
                {
                    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)
            {
                string strLayerName = dataGridViewX1.Rows[e.RowIndex].Cells["图层名称"].Value.ToString();

                if (dataGridViewX1.Columns[e.ColumnIndex].HeaderText == "审核")
                    ShenHe(strLayerName);
                else if (dataGridViewX1.Columns[e.ColumnIndex].HeaderText == "操作")
                {
                    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;

            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;
        }

        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);

                for (int i = ctl1.Globe.Layers.Count - 1; i >= 0; i--)
                {
                    if (ctl1.Globe.Layers[i].Caption == str)
                    {
                        ctl1.Globe.Layers.Remove(ctl1.Globe.Layers[i]);
                    }
                }

                foreach (TreeNode n in layerTree.Nodes)
                {
                    if (n.Text == "临时图层")
                    {
                        for (int i = 0; i < n.Nodes.Count; i++)
                        {
                            if (n.Nodes[i].Text == str)
                            {
                                n.Nodes[i].Remove();
                            }
                        }
                    }
                }

                string sql = "delete from casic_audit_result where SH_LAYER = '" + str + "'";

                OledbHelper.sqlExecuteNonQuery(sql);

            }
        }


    }
}