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