Newer
Older
EMS_REFACTOR / FrmQuerySQL.cs
nn-203 on 26 Jul 2017 10 KB first commit
using System;
using System.Data;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using GeoScene.Data;
using GeoScene.Engine;
using GeoScene.Globe;

namespace Cyberpipe
{
    public partial class FrmQuerySQL : Office2007Form
    {
        private GSOGlobeControl m_globeControl;
        private GSODataset ds;
        string sql;
        public string currentLayerName;
        static FrmQuerySQL frm;
        DataTable table = new DataTable();
//        string strLable = "";
        MainFrm.DataGridViewDelegate m_InitDataGridViewX1;
        private MainFrm.PageControlStuct _pageControl;
        public static void ShowForm(GSOGlobeControl _ctl, MainFrm.DataGridViewDelegate InitDataGridViewX1, MainFrm.PageControlStuct pageControl)
        {
            if (frm == null)
            {
                frm = new FrmQuerySQL(_ctl, InitDataGridViewX1,pageControl);
                frm.Show(_ctl.Parent);
            }
            else
            {
                if (frm.WindowState == FormWindowState.Minimized)
                {
                    frm.WindowState = FormWindowState.Normal;
                }
            }
        }

        public FrmQuerySQL(GSOGlobeControl _ctl, MainFrm.DataGridViewDelegate InitDataGridViewX1, MainFrm.PageControlStuct pageControl)
        {
            InitializeComponent();
            m_globeControl = _ctl;
            m_InitDataGridViewX1 = InitDataGridViewX1;
            _pageControl = pageControl;
        }

        #region 符号按钮双击事件
        private void btn_equal_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " =";
        }

        private void btn_Notequal_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " <>";

        }

        private void btn_Big_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " >";

        }

        private void btn_BigEqual_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " >=";

        }

        private void btn_Small_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " <";

        }

        private void btn_Smallequal_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " <=";

        }

        private void btn_Brace_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " ()";

        }

        private void btn_Like_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " Like";

        }

        private void btn_And_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " AND";

        }

        private void btn_Or_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " OR";

        }

        private void btn_IS_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " IS";

        }

        private void btn_Not_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " NOT";

        }

        private void btn_What_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " ?";

        }

        private void btn_All_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " *";

        }
        #endregion

        /// <summary>
        /// 清空按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Clear_Click(object sender, EventArgs e)
        {
            textBox_WhereClause.Clear();//清空条件
        }
       /// <summary>
       /// 窗体初始化事件处理
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
        private void Frm_QuerySQL_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < m_globeControl.Globe.Layers.Count; i++)//获取树节点后中所有的layer图层
            {
                GSOLayer layer = m_globeControl.Globe.Layers[i];
                if (layer != null && layer.Dataset != null && layer.Dataset.IsFeatureDataset)
                {
                    string name = layer.Name;
                    if (layer.Type == EnumLayerType.FeatureLayer && !name.Contains("\\"))
                    {
                        if (name.EndsWith("管线") || name.EndsWith("附属物") || name.EndsWith("管点"))
                        {
                            if (!name.Contains("施工") && !name.Contains("规划"))
                                cbox_Layers.Items.Add(name);
                        }
                    }
                }
            }
            cbox_Layers.SelectedIndex = 0;

        }
        //获取唯一值添加到listbox_Value中
        string str1;
        string str2;
        /// <summary>
        /// 获取唯一值按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_GetValue_Click(object sender, EventArgs e)
        {
            try
            {
                listBox_Value.Items.Clear();

                for (int j = 0; j < sourcefDataset.FieldCount; j++)
                {
                    GSOFieldAttr fieldef = sourcefDataset.GetField(j);
                    if (listBox_Field.SelectedItem.ToString() == fieldef.Name && fieldef.Type == EnumFieldType.Text)
                    {
                        str1 = "'";
                        str2 = "'";
                    }
                }

                ClassSearchAnalysis.ResultDistinctDataTable(out table, cbox_Layers.SelectedItem.ToString(),listBox_Field.SelectedItem.ToString());

                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;
                    }
                    string col = str1 + colString1 + str2;
                    listBox_Value.Items.Add(col);
                }
                str1 = "";
                str2 = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        //双击添加到查询列中
        private void listBox_Field_DoubleClick(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " " + listBox_Field.Text;            
        }

        private void listBox_Value_DoubleClick(object sender, EventArgs e)
        {
            textBox_WhereClause.Text += " " + listBox_Value.Text;
        }

        /// <summary>
        /// 应用按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Apply_Click(object sender, EventArgs e)
        {
            currentLayerName = cbox_Layers.SelectedItem.ToString();

//            ClassSearchAnalysis.ResultDataTable(out table, m_globeControl, currentLayerName, textBox_WhereClause.Text);

//            if (table != null && table.Rows.Count != 0)
//            {
//                strLable = currentLayerName + " || 共有:" + table.Rows.Count + "记录";
//                m_InitDataGridViewX1(table, strLable, currentLayerName, true);
//            }
            PaginationUtil.ResetPagination();
            int total = PaginationUtil.CountSql(currentLayerName, textBox_WhereClause.Text);
            if (total > 0)
            {
                string strLable = currentLayerName + " || 共有:" + total + "记录";
                string sql = PaginationUtil.GetQuerySql(m_globeControl, currentLayerName, textBox_WhereClause.Text);
                PaginationUtil pagination = PaginationUtil.InitPagination(sql, total, _pageControl, m_InitDataGridViewX1, strLable, currentLayerName);
                pagination.FillDataGridView();
            }
            else
            {
                m_InitDataGridViewX1(null, "", "", false);
                MessageBox.Show("没有查询到复合条件的数据!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// 取消按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Cancel_Click(object sender, EventArgs e)
        {
            Close();
        }
        GSOFeatureDataset sourcefDataset;
        /// <summary>
        /// 图层下拉框选中项改变事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbox_Layers_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox_Field.Items.Clear();
            GSOLayer m_layer = m_globeControl.Globe.Layers.GetLayerByCaption(cbox_Layers.SelectedItem.ToString().Trim());//获取当前选择的layer图层
            if (m_layer == null)
                return;

            GSOFeatureLayer flayer = m_layer as GSOFeatureLayer;
            ds = m_layer.Dataset;
            sourcefDataset = ds as GSOFeatureDataset;
            sourcefDataset.Open();

            for (int j = 0; j < sourcefDataset.FieldCount; j++)
            {
                GSOFieldAttr fieldef = sourcefDataset.GetField(j);
                listBox_Field.Items.Add(fieldef.Name);
            }
            //设置当前选择字段为第一个
            listBox_Value.Items.Clear();
        }
        /// <summary>
        /// 列表项单击事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listBox_Field_Click(object sender, EventArgs e)
        {
            btn_GetValue_Click(sender, e);
        }
        /// <summary>
        /// 窗体关闭事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Frm_QuerySQL_FormClosing(object sender, FormClosingEventArgs e)
        {
            m_InitDataGridViewX1(null, "", "", false);
            frm = null;
        }
    }
}