Newer
Older
GHFX_REFACTOR / FrmYJSHTC.cs
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);

                foreach (TreeNode n in layerTree.Nodes)
                {
                    if (!n.Text.Equals("临时图层")) continue;
                    //以后在本类中只传一个临时图层的节点,不传layertree就不需要上面的遍历了
                    TreeUtils.RemoveNode(n, str);
                }

                string sql = "delete from casic_audit_result where SH_LAYER = '" + str + "'";
                OledbHelper.sqlExecuteNonQuery(sql);
            }
        }

    }
}