Newer
Older
GHFX_REFACTOR / FrmMetadataStat.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using DevComponents.DotNetBar;

namespace Cyberpipe
{
    public partial class FrmMetadataStat : Office2007Form
    {
      
        public FrmMetadataStat()
        {
            InitializeComponent();
        }
        //根据关键字查询
        private void searchBtn_Click(object sender, EventArgs e)
        {
            string sql = "select LAYERNAME from casic_metadataLayer where LAYERNAME like '%" 
                + keywordsTxt.Text.Trim() + "%'";
             DataTable table = OledbHelper.QueryTable(sql);
             int num = 0; 

             resultList.Clear();
             consLblC.Text = "";
             descLblC.Text = "";
             authorLblC.Text = "";
             ntLblC.Text = "";

             if (table != null && table.Rows.Count > 0)
             {
                 num = table.Rows.Count;
                 for (int i = 0; i < num;i++ )
                 {
                     resultList.Items.Add(table.Rows[i][0].ToString());
                 } 
             }
             resultLbl.Text = "共有"+num+"个查询结果";

            //绘制图表
            drawChart();
        }
        //绘制图表
        private void drawChart() { 
            if (chart1.Series.Count > 0)
            {
                chart1.Series.Clear();
            }
            if (chart1.Legends.Count > 0)
            {
                chart1.Legends.Clear();
            } 
            int layernum  =  statistLayer();
            int metadataLayernum = statistMDLayer();
            int nomdLayernum = layernum - metadataLayernum;
            //MessageBox.Show("共有多少层?" + layernum.ToString()+"=="+metadataLayernum.ToString()+"=="+nomdLayernum.ToString());
//            dic.Clear();
            Dictionary<string, int> dic = new Dictionary<string, int>();  
            dic.Add("已建",metadataLayernum);
            dic.Add("未建", nomdLayernum);

            chart1.Series.Add("图层");
            // Set axis title
            chart1.ChartAreas["ChartArea1"].AxisX.Title = "元数据图层";
            chart1.ChartAreas["ChartArea1"].AxisY.Title = "个数";

            chart1.Series["图层"].ChartType = SeriesChartType.Column;
            chart1.Series["图层"]["DrawingStyle"] = "Cylinder";
            chart1.Series["图层"].IsValueShownAsLabel = true;
             
            ArrayList xlist = new ArrayList();
            ArrayList ylist = new ArrayList();
             
            foreach (string key in dic.Keys)
            {
                if (dic[key] == 0) continue;
                xlist.Add(key);
                ylist.Add(dic[key]);
            }
            chart1.Series[0].Points.DataBindXY(xlist, ylist);

        }
        //统计有多少个有元数据的图层
        private int statistMDLayer(){
            int mdlayernum = 0;

            string sql = "select * from casic_metadataLayer";
            DataTable table = OledbHelper.QueryTable(sql);
            if(table!=null)mdlayernum = table.Rows.Count;
             
            return mdlayernum;
        }
        //统计有多少个图层
        private int statistLayer()
        {
            List<DataSrc> datasrcs = Utility.LayerConfig.datasrcs;
            return datasrcs.SelectMany(datasrc => datasrc.layertypes).Sum(layerType => layerType.layers.Count);
        }

        //选择list
        private void resultList_SelectedIndexChanged(object sender, EventArgs e)
        {
            //MessageBox.Show(resultList.SelectedItems[0].Text);
            string layer = resultList.SelectedItems[0].Text;
            searchLayerInfo(layer);
        }
        //查询元数据
        private void searchLayerInfo(String layername)
        {
            ////MessageBox.Show(layername);
            string sql = "select casic_metadatacontent.MDABSTRACT,casic_metadatacontent.MDDESCRIPTION,"
                + "casic_metadatacontent.MDAUTHOR,casic_metadatacontent.NT from casic_metadatacontent "
                + "join casic_metadatalayer on casic_metadatalayer.LAYERID = casic_metadatacontent.LAYERID "
                + "where casic_metadatalayer.LAYERNAME='" + layername + "'";
            DataTable table = OledbHelper.QueryTable(sql);
            //MessageBox.Show(num.ToString());
            if (table != null && table.Rows.Count > 0)
            { 
                consLblC.Text = table.Rows[0][0].ToString();
                descLblC.Text = table.Rows[0][1].ToString();
                authorLblC.Text = table.Rows[0][2].ToString();
                ntLblC.Text = table.Rows[0][3].ToString();
            }
            else
            { 
                MessageBox.Show("没有查到该图层的元数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                consLblC.Text = "";
                descLblC.Text = "";
                authorLblC.Text = "";
                ntLblC.Text = "";
            }
        }
    }
}