Newer
Older
EMS_REFACTOR / FrmMaterialSel.cs
nn-203 on 26 Jul 2017 7 KB first commit
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using GeoScene.Globe;

namespace Cyberpipe
{
    public partial class FrmMaterialSel : Office2007Form
    {
        GSOGlobeControl globeControl1;
        List<string> layerNames = new List<string>();
        static FrmMaterialSel frm;
        private MainFrm.DataGridViewDelegate m_InitDataGridViewX1;
        DataTable table = new DataTable();
//        string strLable = "";
        private MainFrm.PageControlStuct _pageControl;

        public static void ShowForm(GSOGlobeControl _ctl, List<string> _list, MainFrm.DataGridViewDelegate InitDataGridViewX1, MainFrm.PageControlStuct pageControl)
        {
            if (frm == null)
            {
                frm = new FrmMaterialSel(_ctl, _list, InitDataGridViewX1,pageControl);
                frm.Show(_ctl.Parent);
            }
            else
            {
                if (frm.WindowState == FormWindowState.Minimized)
                {
                    frm.WindowState = FormWindowState.Normal;
                }
            }
        }

        public FrmMaterialSel(GSOGlobeControl _ctl, List<string> _list, MainFrm.DataGridViewDelegate InitDataGridViewX1, MainFrm.PageControlStuct pageControl)
        {
            InitializeComponent();
            globeControl1 = _ctl;
            layerNames = _list;
            m_InitDataGridViewX1 = InitDataGridViewX1;
            _pageControl = pageControl;
        }
        /// <summary>
        /// 窗体初始化事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmMaterialSel_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < layerNames.Count; i++)
            {
                if (!comboBoxEx1.Items.Contains(layerNames[i]))
                {
                    comboBoxEx1.Items.Add(layerNames[i]);
                }
            }
        }
        /// <summary>
        /// 下拉框选中项事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBoxEx1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxEx1.Text.Trim());
            if (layer == null)
            {
                MessageBox.Show("图层不存在", "提示");
                return;
            }

            ClassSearchAnalysis.ResultDistinctDataTable(out table, layer.Name, "材质");

            if (table.Rows.Count > 0)
            {
                listBox1.Items.Clear();
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    if (table.Rows[i][0].ToString() == "")
                    {
                        listBox1.Items.Add("无");
                    }
                    else
                    {
                        listBox1.Items.Add(table.Rows[i][0].ToString());
                    }
                }
            }

            listBox2.Items.Clear();
        }
        /// <summary>
        /// 将所有材质类型列表中的选中项添加到查询材质类型列表中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonX2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItems.Count>0)
            {
                for (int i = 0; i < listBox1.SelectedItems.Count; i++)
                {
                    for (int j = 0; j < listBox2.Items.Count; j++)
                    {
                        if (listBox1.SelectedItems[i].ToString() == listBox2.Items[j].ToString())
                        {
                            listBox2.Items.RemoveAt(j);
                            break;
                        }                       
                    }
                    listBox2.Items.Add(listBox1.SelectedItems[i]);
                }
            }
            else
            {
                MessageBox.Show("请选中一种所有材质类型!");
            }
        }
        /// <summary>
        /// 查询按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonX1_Click(object sender, EventArgs e)
        {
            if (listBox2.Items.Count == 0)
            {
                MessageBox.Show("请选择要查询的材质类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                try
                {
                    GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxEx1.Text.Trim());
                    if (layer == null)
                    {
                        MessageBox.Show("图层不存在", "提示");
                        return;
                    }
                    List<string> filedValueList = new List<string>();
                    for (int i = 0; i < listBox2.Items.Count; i++)
                    {
                        filedValueList.Add(listBox2.Items[i].ToString());
                    }

//                    ClassSearchAnalysis.ResultDataTableContainNull(out table, globeControl1,
//                        comboBoxEx1.Text.Trim(), "材质", filedValueList);

//                    if (table != null && table.Rows.Count > 0)
//                    {
//                        strLable = comboBoxEx1.Text + " 共有:" + table.Rows.Count + "个";
//                        m_InitDataGridViewX1(table, strLable, comboBoxEx1.Text, true);
//                    }
                    PaginationUtil.ResetPagination();
                    int total = PaginationUtil.CountSql(comboBoxEx1.Text.Trim(), "材质", filedValueList);
                    if (total > 0)
                    {
                        string strLable = comboBoxEx1.Text + "共有:" + total + "个";
                        string sql = PaginationUtil.GetQuerySql(globeControl1, comboBoxEx1.Text.Trim(), "材质", filedValueList);
                        PaginationUtil pagination = PaginationUtil.InitPagination(sql, total, _pageControl, m_InitDataGridViewX1, strLable, comboBoxEx1.Text);
                        pagination.FillDataGridView();
                    }
                    else
                    {

                        m_InitDataGridViewX1(null, "", "", false);
                        MessageBox.Show("没有查到符合条件的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex.Message);
                }
            }
           
        }
        /// <summary>
        /// 取消按钮事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonX3_Click(object sender, EventArgs e)
        {
            Close();
        }
        /// <summary>
        /// 窗体关闭事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmMaterialSel_FormClosing(object sender, FormClosingEventArgs e)
        {
            m_InitDataGridViewX1(null, "", "", false);
            frm = null;
        }
        /// <summary>
        /// 删除查询材质类型列表中的选中项
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonX4_Click(object sender, EventArgs e)
        {
            if (listBox2.SelectedItems.Count > 0)
            {
                for (int i = 0; i < listBox2.SelectedItems.Count; i++)
                {
                    listBox2.Items.Remove(listBox2.SelectedItems[i]);
                    i--;
                }
            }
            else
            {
                MessageBox.Show("请选中要删除的查询材质类型!");    
            }
        }

    }
}