C#之Chart篇

作者: 此十八 | 来源:发表于2018-03-15 11:55 被阅读20次

    1.第一个Chart控件

    1)先来熟悉一下chart,在前端做一个图表可能会用到chart.js,在C#中可以用自带的控件chart,感觉挺方便的。

    2)创建一个项目,windows窗体应用程序。在工具箱的【数据】找到【 Chart】控件,并拖到窗体

    3)右键chart【属性】,在VS右侧属性【布局】下面找到【Dock】属性设置为Fill,自己再调整一下大小

    4)这里的操作是当加载窗体的时候显示chart,所以有个窗体load事件。

    5)双击后直接进入代码,当在代码中写Series时会出现红色波浪线,提示缺少相关命名空间之类的,点击【Series】就可以看到所需要的,添加就ok了

    6)代码

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Windows.Forms.DataVisualization.Charting;namespace MyChart{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();}        private void Form1_Load(object sender, EventArgs e)        {            //清除默认的series            chart1.Series.Clear();//new 一个叫做【Strength】的系列            Series Strength = new Series("力量");  //设置chart的类型,这里为柱状图            Strength.ChartType= SeriesChartType.Column;//给系列上的点进行赋值,分别对应横坐标和纵坐标的值            Strength.Points.AddXY("A","90");Strength.Points.AddXY("B","88");Strength.Points.AddXY("C","60");Strength.Points.AddXY("D","93");Strength.Points.AddXY("E","79");Strength.Points.AddXY("F","85");//把series添加到chart上            chart1.Series.Add(Strength);      }    }}

    7)效果图

    2.两个Series

    1)右击项目名,【添加】一个windows窗体。然后的话步骤和前面一样,这里就不多说了

    2)简单粗暴上代码

    using System; 

    using System.Collections.Generic; 

    using System.ComponentModel; 

    using System.Data; 

    using System.Drawing; 

    using System.Linq; 

    using System.Text; 

    using System.Windows.Forms; 

    using System.Windows.Forms.DataVisualization.Charting;

    namespace MyChart 

    public partial class Form2 : Form 

    public Form2() 

    InitializeComponent(); 

    }

        private void Form2_Load(object sender, EventArgs e)

        {

            chart1.Series.Clear();

            Series Strength = new Series("力量");

            Series Speed= new Series("速度");

            Strength.ChartType = SeriesChartType.Column;

            Strength.IsValueShownAsLabel = true;

            Strength.Color = System.Drawing.Color.Cyan;

            Speed.ChartType = SeriesChartType.Spline;

            Speed.IsValueShownAsLabel = true;

            chart1.ChartAreas[0].AxisX.MajorGrid.Interval =0.5;

            chart1.ChartAreas[0].AxisX.MajorGrid.Enabled =true;

            //chart1.ChartAreas[0].Area3DStyle.Enable3D = true;

            chart1.ChartAreas[0].AxisX.IsMarginVisible = true;

            chart1.ChartAreas[0].AxisX.Title = "英雄";

            chart1.ChartAreas[0].AxisX.TitleForeColor = System.Drawing.Color.Crimson;

            chart1.ChartAreas[0].AxisY.Title = "属性";

            chart1.ChartAreas[0].AxisY.TitleForeColor = System.Drawing.Color.Crimson;

            chart1.ChartAreas[0].AxisY.TextOrientation = TextOrientation.Horizontal;

            Strength.LegendText = "力气";

            Strength.Points.AddXY("A", "90");

            Strength.Points.AddXY("B", "88");

            Strength.Points.AddXY("C", "60");

            Strength.Points.AddXY("D", "93");

            Strength.Points.AddXY("E", "79");

            Strength.Points.AddXY("F", "85");

            Speed.Points.AddXY("A", "120");

            Speed.Points.AddXY("B", "133");

            Speed.Points.AddXY("C", "100");

            Speed.Points.AddXY("D", "98");

            Speed.Points.AddXY("E", "126");

            Speed.Points.AddXY("F", "89");

            //把series添加到chart上

            chart1.Series.Add(Speed);

            chart1.Series.Add(Strength);

        }

    }

    }

    3)效果

    4)熟悉常用属性和方法

    (1)Series对象

    Series Strength = new Series("力量"); 

    Series Speed= new Series("速度");

    设置series类型

    Strength.ChartType = SeriesChartType.Column; 

    Speed.ChartType = SeriesChartType.Spline;

    是否把值当做标签展示(默认false)

    Speed.IsValueShownAsLabel = true;

    设置series颜色

    Strength.Color = System.Drawing.Color.Cyan;

    给series上的点赋值

    Strength.Points.AddXY("A","90");Strength.Points.AddXY("B","88");Strength.Points.AddXY("C","60");

    (2)ChartArea(就是我们看到的区域)

    以3D形式展示

    chart1.ChartAreas[0].Area3DStyle.Enable3D = true;

    设置坐标轴标题

    chart1.ChartAreas[0].AxisY.Title="属性";chart1.ChartAreas[0].AxisY.TitleForeColor= System.Drawing.Color.Crimson;chart1.ChartAreas[0].AxisY.TextOrientation= TextOrientation.Horizontal;

    设置网格间隔(这里设成0.5,看得更直观一点)

    chart1.ChartAreas[0].AxisX.MajorGrid.Interval=0.5;

    1

    3.库存波动

    1)主代码

    using Daisy.Common.McsClient;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Windows.Forms.DataVisualization.Charting;namespace BIZWhOnhandQuery{    public partial class MainForm : Mes.ControlsEx.ExtendForm.BaseForm{        public string QuerySql01 = string.Empty;public MainForm()        {            InitializeComponent();}        private void navigatorEx1_OnQuery(object sender, Mes.Core.ApplicationObject.SystemNavigatorClickedEventArgse)        {            try            {                QueryForm qf = new QueryForm();qf.StartPosition= FormStartPosition.CenterScreen;qf.ShowDialog();if (qf.DialogResult== System.Windows.Forms.DialogResult.OK)                {                    QuerySql01 = qf.QuerySql01;this.chart1.Series.Clear();//先将series清除//设置X/Y样式                            chart1.ChartAreas[0].AxisY.Title= Mes.Core.Utility.StrUtil.Translate("数量");chart1.ChartAreas[0].AxisX.Title= Mes.Core.Utility.StrUtil.Translate("日期");chart1.ChartAreas[0].AxisX.LabelStyle.Angle=0;chart1.ChartAreas[0].AxisX.IntervalAutoMode= IntervalAutoMode.VariableCount;chart1.ChartAreas[0].AxisY.IntervalAutoMode= IntervalAutoMode.VariableCount;// chart1.ChartAreas[0].AxisX.Enabled= AxisEnabled.False;// chart1.ChartAreas[0].AxisY.Enabled= AxisEnabled.False;chart1.Titles[0].Text="";//设置char样式                            this.chart1.Series.Add(Mes.Core.Utility.StrUtil.Translate("数量"));chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].MarkerColor= Color.Black;//设置标志chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].MarkerSize=1;chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].MarkerStyle= MarkerStyle.Square;chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].IsValueShownAsLabel= false;//是否显示值chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].ChartType= SeriesChartType.Spline;//设置显示样式chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].BorderWidth=1;chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].Color= Color.Blue;chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].ToolTip= Mes.Core.Utility.StrUtil.Translate("原材料数量");chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].YValueType= ChartValueType.Double;McsDataReader reader = (McsDataReader)Mes.Core.Service.DatabaseAccessService.execute(qf.QuerySql01, Mes.Core.Service.ReturnType.RESULTSET);if (reader.rowNumber>0)                            {                                while (reader.Read())                                {                                    chart1.Series[Mes.Core.Utility.StrUtil.Translate("数量")].Points.AddXY(reader.getString(1), reader.getString(0));}                            }                            chart1.ChartAreas[0].AxisY.Minimum=0;chart1.ChartAreas[0].Axes[1].LabelStyle.Format="N0";}                        }                      }  catch (Exception ex)            {                MessageBox.Show(ex.Message);return;}          }    }

    2)效果图

    4.设备使用分析

    查询设备在某个时间范围内的使用频率(可按日或周或月),点击一条记录可以看到对应的曲线。该报表的设备包括有记录已经维护基础数据的设备,也包括有记录还没有维护基础数据的设备

    1)功能代码结构

    2)MainForm

    using Daisy.Common.McsClient;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace BIZDeviceUseAnalysis{    public partial class MainForm : Mes.ControlsEx.ExtendForm.BaseForm{        QueryForm form = null;public MainForm()        {            InitializeComponent();}        private void navigatorEx1_OnQuery(object sender, Mes.Core.ApplicationObject.SystemNavigatorClickedEventArgse)        {            form = new QueryForm();form.ShowDialog();if (form.DialogResult== System.Windows.Forms.DialogResult.OK)            {                GetData();}        }        void GetData()        {            try            {                AddColumns();          //获取列名AddDataInGridView();}            catch (Exception ex)            {                MessageBox.Show(ex.Message);}        }        void AddColumns()        {            try            {                List columnList = new List();McsDataReader reader = (McsDataReader)Mes.Core.Service.DatabaseAccessService.execute(form.colsql, Mes.Core.Service.ReturnType.RESULTSET);//McsDataReader reader01 = (McsDataReader)Mes.Core.Service.DatabaseAccessService.execute(form.QuerySql, Mes.Core.Service.ReturnType.RESULTSET);while (reader.Read())                {                    string calendar = reader.getString(0);if (form.Kind==1)                    {                        calendar = DateTime.Parse(calendar).ToString("yyyy-MM-dd");}                    //if (form.Kind==2)                    //{                    //    calendar = DateTime.Parse(calendar).ToString("yyyy-iw");//}                    //if (form.Kind==3)                    //{                    //    calendar = DateTime.Parse(calendar).ToString("yyyy-MM");//}                    columnList.Add(calendar);}                if (columnList.Count==0)                    return;int count = this.dataGridViewEx1.Columns.Count;for (int j = count -1; j > 2; j--){                    this.dataGridViewEx1.Columns.RemoveAt(j);}                for (int i =0; i < columnList.Count; i++){                    Mes.ControlsEx.DataGridViewTextBoxExColumnColumn = new Mes.ControlsEx.DataGridViewTextBoxExColumn(this.components);Column.DataType= Mes.Core.ApplicationObject.DataGridViewColumnDataType.NONE;Column.DefaultCellStyle.Alignment= DataGridViewContentAlignment.NotSet;Column.SortMode= DataGridViewColumnSortMode.Automatic;Column.HeaderText= Mes.Core.Utility.StrUtil.ValueToString(columnList[i]);//Column.HeaderText= DateTime.Parse(Mes.Core.Utility.StrUtil.ValueToString(columnList[i])).ToString("yyyy-MM-dd");Column.ToolTipText= Mes.Core.Utility.StrUtil.ValueToString(columnList[i]);Column.IgnoreValueChanged= false;Column.IndexOrder=0;Column.IsShowTimePick= false;Column.LovParameter= null;Column.MustBeInput= false;Column.MustBeInputErrorMsg="";Column.Name="Col"+ Mes.Core.Utility.StrUtil.ValueToString(columnList[i]);Column.Tag= columnList[i];Column.PopType= Mes.Core.ApplicationObject.DataGridViewColumnPopType.NONE;Column.RangeEndValue="";Column.RangeStartValue="";Column.ReadOnly= true;Column.RegString="";Column.ValidationErrorMsg="";Column.ValidationType= Mes.Core.ApplicationObject.DataGridViewColumnValidationType.NONE;Column.Width=150;Column.Resizable= DataGridViewTriState.False;Column.SortMode= DataGridViewColumnSortMode.NotSortable;this.dataGridViewEx1.Columns.Add(Column);}            }            catch (Exception ex)            {                throw ex;}        }        void AddDataInGridView()        {            try            {                this.dataGridViewEx1.Rows.Clear();GetDataBySQL(form.QuerySql,1);this.statusStripBarEx1.ShowMessage(Mes.Core.Utility.StrUtil.Translate("共查询到"+ dataGridViewEx1.RowCount+"条数据"));//FillChart();//填充图表}            catch (Exception ex)            {                throw ex;}        }        void GetDataBySQL(string sql, int type)        {            try            {                int rowIndex = -1;McsDataReader reader = (McsDataReader)Mes.Core.Service.DatabaseAccessService.execute(sql, Mes.Core.Service.ReturnType.RESULTSET);while (reader.Read())                {                    string calendar = reader.getString(2);if (form.Kind==1)                    {                        // calendar = DateTime.Parse(calendar).ToShortDateString();calendar = DateTime.Parse(calendar).ToString("yyyy-MM-dd");}                    string mac= reader.getString(0);string deviceCode = reader.getString(3);string deviceName = reader.getString(4);string value=reader.getString(1);bool IsExist = false;for (int i =0; i < this.dataGridViewEx1.Rows.Count; i++){                            string rowValue = Mes.Core.Utility.StrUtil.ValueToString(this.dataGridViewEx1.Rows[i].Cells[0].Value);if (rowValue == mac)                            {                                rowIndex = i;IsExist = true;break;}                        }                        if (IsExist)                        {                            FindCellForValue(rowIndex, value, calendar,deviceCode,deviceName);}                        else                        {                            string text = string.Empty;if (type ==1)                                text = mac;// MessageBox.Show("mac:"+ mac);rowIndex = this.dataGridViewEx1.Rows.Add(text);this.dataGridViewEx1.Rows[rowIndex].Cells[1].Value= deviceCode;this.dataGridViewEx1.Rows[rowIndex].Cells[2].Value= deviceName;FindCellForValue(rowIndex, value, calendar, deviceCode, deviceName);}                }            }            catch (Exception ex)            {                throw ex;}        }        void FindCellForValue(int rowIndex, string Value, string ScanItem,string deviceCode,string deviceName)        {            for (int i =3; i < this.dataGridViewEx1.Columns.Count; i++){                if (ScanItem == this.dataGridViewEx1.Columns[i].HeaderText)                {                      this.dataGridViewEx1.Rows[rowIndex].Cells[i].Value=Value;}            }        }        void FillChart(int rowIndex)        {            int FixColumnIndex =1;try            {                chart1.Series.Clear();//chart1.ChartAreas[0].Axes[1].Maximum=1.3;chart1.ChartAreas[0].Axes[1].Minimum=0;//设置网格线                  chart1.ChartAreas[0].AxisX.MajorGrid.LineColor= Color.Black;chart1.ChartAreas[0].AxisX.MajorGrid.Interval=0;//网格间隔chart1.ChartAreas[0].AxisX.MinorGrid.Interval=0;chart1.ChartAreas[0].AxisY.MajorGrid.LineColor= Color.Black;chart1.ChartAreas[0].AxisY.MajorGrid.Interval=0;chart1.ChartAreas[0].AxisY.MinorGrid.Interval=0;chart1.ChartAreas[0].AxisY.Title= Mes.Core.Utility.StrUtil.Translate("使用次数");chart1.ChartAreas[0].AxisX.Title= Mes.Core.Utility.StrUtil.Translate("使用日期");//折线图                //for (int i =0; i < this.datagridviewex1.rowcount; i++)//{                    int[] yValues1 = new int[this.dataGridViewEx1.Columns.Count- FixColumnIndex];string[] xValues1 = new string[this.dataGridViewEx1.Columns.Count- FixColumnIndex];//int[]yValues1=new int[0];//string[] xValues1=new string[0];chart1.Series.Add(Mes.Core.Utility.StrUtil.ValueToString(this.dataGridViewEx1.Rows[rowIndex].Cells[0].Value));//设置图片类型                    chart1.Series[0].ChartType= System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;//设置默认轴                    chart1.Series[0].IsVisibleInLegend= true;//设置图例显示                    chart1.Series[0].IsValueShownAsLabel= true;//设置轴显示                    //chart1.Series[i].Label="#VAL{P}";//设置线条粗细                    chart1.Series[0].BorderWidth=3;int count =0;for (int j =3; j < this.dataGridViewEx1.ColumnCount; j++){                        int  _value =0;string value = Mes.Core.Utility.StrUtil.ValueToString(this.dataGridViewEx1.Rows[rowIndex].Cells[j].Value);string text = Mes.Core.Utility.StrUtil.ValueToString(this.dataGridViewEx1.Columns[j].HeaderText);xValues1[count] = text;//柱状图数据添加                        if (value!= string.Empty)                        {                            _value =Convert.ToInt32(value);yValues1[count] = _value;}                        else                        {                            _value =0;yValues1[count] = _value;}                        chart1.Series[0].Points.DataBindXY(xValues1,yValues1);count +=1;// }                }            }            catch (Exception ex)            {                throw ex;}        }        private void navigatorEx1_Load(object sender, EventArgs e)        {            this.navigatorEx1.AddButton(Mes.Core.Utility.StrUtil.Translate("设备基础资料维护"), MAINTAIN_DEVICE);}        //设备基础资料维护窗口        private void MAINTAIN_DEVICE(object sender, EventArgs e)        {            BaseInfoForm bi = new BaseInfoForm();bi.ShowDialog();}        private void dataGridViewEx1_CellClick(object sender, DataGridViewCellEventArgs e)        {            int currentIndex = e.RowIndex;if (e.RowIndex<0)                return;if (this.dataGridViewEx1.Rows.Count>0&& e.RowIndex< this.dataGridViewEx1.Rows.Count) {                FillChart(currentIndex);}        }    }}

    3)QueryForm

    usingMes.ControlsEx;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace BIZDeviceUseAnalysis{publicpartialclassQueryForm : Mes.ControlsEx.ExtendForm.QueryForm    {publicintKind =0;publicstringcolsql =string.Empty;publicQueryForm()        {            InitializeComponent();        }privatevoidQueryForm_Load(objectsender, EventArgs e)        {        }privatevoidcbByDay_CheckedChanged(objectsender, EventArgs e)        {            CheckChangeEvent(sender);        }privatevoidcbByWeek_CheckedChanged(objectsender, EventArgs e)        {            CheckChangeEvent(sender);        }privatevoidcbByMonth_CheckedChanged(objectsender, EventArgs e)        {            CheckChangeEvent(sender);        }privatevoidCheckChangeEvent(objectsender)        {try{if((senderasCheckBoxEx).Checked ==true)                {foreach(CheckBoxEx chkin(senderasCheckBoxEx).Parent.Controls)                    {if(chk != sender)                        {                            chk.Checked =false;                        }                    }                }            }catch(Exception ex)            {                MessageBox.Show(ex.Message);            }        }privatevoidQueryForm_OnQuery(objectsender, EventArgs e)        {stringstartTimeStr =string.Empty;stringendTimeStr =string.Empty;stringcondition =string.Empty;stringmac =string.Empty;//MacstringtxtMac =this.tbMac.Text.Trim();            List macList =this.tbMac.MultirowValue;if(macList !=null& macList.Count >0)            {                mac =" AND mac in ("+ Mes.Core.Utility.StrUtil.BuildPara(macList) +") ";            }else{if(txtMac !=string.Empty)                {                    mac =" AND mac "+ Mes.Core.Utility.StrUtil.ProcInput(txtMac,false);                }            }//查询日期从stringtxtDailyWorkFrom =this.tbDateFrom.Text.Trim();if(txtDailyWorkFrom ==string.Empty)            {                MessageBox.Show(Mes.Core.Utility.StrUtil.Translate("查询日期从不能为空"));return;            }else{                startTimeStr = txtDailyWorkFrom;            }//查询日期到stringtxtDailyWorkTo =this.tbDateTo.Text.Trim();if(txtDailyWorkTo ==string.Empty)            {                MessageBox.Show(Mes.Core.Utility.StrUtil.Translate("查询日期到不能为空"));return;            }else{                endTimeStr = txtDailyWorkTo;            }              TimeSpan ts;try{                DateTime startTime = DateTime.ParseExact(txtDailyWorkFrom,"yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);                DateTime endTime = DateTime.ParseExact(txtDailyWorkTo,"yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);                ts = endTime - startTime;            }catch{                MessageBox.Show(Mes.Core.Utility.StrUtil.Translate("时间格式不正确"));return;            }//日报if(this.cbByDay.Checked)            {if(ts.TotalDays >30)                {                    MessageBox.Show(Mes.Core.Utility.StrUtil.Translate("查询日期从到查询日期到不能超过一个月"));return;                }                Kind =1;                condition +="GROUP BY mac, to_char(bmr.creation_date, 'yyyy-mm-dd'), device_code,device_name";                condition +=" ORDER BY mac, to_char(bmr.creation_date, 'yyyy-mm-dd') ,device_code,device_name ";this.QuerySql = Sql.Core.GetMainSqlByDay(startTimeStr, endTimeStr,mac,condition);                colsql = Sql.Core.GetColumnByDay(startTimeStr, endTimeStr);            }//周报if(this.cbByWeek.Checked)            {if(ts.TotalDays >13*7)                {                    MessageBox.Show(Mes.Core.Utility.StrUtil.Translate("查询日期从到查询日期到不能超过13周"));return;                }                Kind =2;                condition +="GROUP BY mac,  to_char(trunc(bmr.creation_date),'yyyy-iw'), device_code,device_name";                condition +=" ORDER BY mac,  to_char(trunc(bmr.creation_date),'yyyy-iw') ,device_code,device_name ";this.QuerySql = Sql.Core.GetMainSqlByWeek(startTimeStr, endTimeStr,mac, condition);                colsql = Sql.Core.GetColumnByWeek(startTimeStr, endTimeStr);            }//月报if(this.cbByMonth.Checked)            {if(ts.TotalDays >365*2)                {                    MessageBox.Show(Mes.Core.Utility.StrUtil.Translate("查询日期从到查询日期到不能超过2年"));return;                }                Kind =3;                condition +="GROUP BY mac,  to_char(trunc(bmr.creation_date),'yyyy-mm'), device_code,device_name";                condition +=" ORDER BY mac,  to_char(trunc(bmr.creation_date),'yyyy-mm') ,device_code,device_name ";this.QuerySql = Sql.Core.GetMainSqlByMonth(startTimeStr, endTimeStr, mac,condition);                colsql = Sql.Core.GetColumnByMonth(startTimeStr, endTimeStr);            }this.DialogResult = System.Windows.Forms.DialogResult.OK;this.Close();        }privatevoidQueryForm_OnCancelQuery(objectsender, EventArgs e)        {this.tbMac.Text =this.tbDateFrom.Text =this.tbDateTo.Text =string.Empty;        }    }}

    5)BaseInfoForm

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace BIZDeviceUseAnalysis{    public partial class BaseInfoForm : Mes.ControlsEx.ExtendForm.BaseForm{        public BaseInfoForm()        {            InitializeComponent();}        private void navigatorEx1_OnQuery(object sender, Mes.Core.ApplicationObject.SystemNavigatorClickedEventArgse)        {            BaseInfoQueryForm bio = new BaseInfoQueryForm();bio.StartPosition= FormStartPosition.CenterScreen;bio.ShowDialog();if (bio.DialogResult== System.Windows.Forms.DialogResult.OK) {                this.navigatorEx1.QuerySql= bio.QuerySql;}        }        private void navigatorEx1_OnSave(object sender, Mes.Core.ApplicationObject.SystemNavigatorClickedEventArgse)        {            if (this.dataGridViewEx1.AddedRows.Count>0)//新增行大于0{                this.navigatorEx1.InsertSqlList= this.SaveOrUpdate(this.dataGridViewEx1.AddedRows, true);//返回值为True}            if (this.dataGridViewEx1.ChangedRows.Count>0)//修改行大于0{                this.navigatorEx1.UpdateSqlList= this.SaveOrUpdate(this.dataGridViewEx1.ChangedRows, false);//返回值为False}        }        private List SaveOrUpdate(List list, bool flag)        {            List InsertOrUpdatelist = new List();for (int i =0; i < list.Count; i++){                int row_index = Convert.ToInt32(list[i]);List lis = new List();if (flag)//如果返回值为True                {                    lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceCode.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceType.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceName.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColMacAddress.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColFloor.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColAdminDepartment.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColEnable.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDescription.Name].Value));string template = Mes.Core.Utility.StrUtil.BuildPara(lis);string sql ="{? = call biz_device_pck.insert_rows_for_ui("+ template +")}";InsertOrUpdatelist.Add(sql);}                else                {                  // lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[0].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceID.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceCode.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceType.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDeviceName.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColMacAddress.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColFloor.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColAdminDepartment.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColEnable.Name].Value));lis.Add(Mes.Core.Utility.StrUtil.ValueToString(dataGridViewEx1.Rows[row_index].Cells[this.ColDescription.Name].Value));string template = Mes.Core.Utility.StrUtil.BuildPara(lis);string sql ="{? = call biz_device_pck.update_rows_for_ui("+ template +")}";InsertOrUpdatelist.Add(sql);}            }            return InsertOrUpdatelist;}        }    }}

    6)BaseInfoQueryForm

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace BIZDeviceUseAnalysis{    public partial class BaseInfoQueryForm : Mes.ControlsEx.ExtendForm.QueryForm{        public BaseInfoQueryForm()        {            InitializeComponent();}        private void BaseInfoQueryForm_OnQuery(object sender, EventArgs e)        {            this.QuerySql= Sql.Core.GetDeviceInfo();// 设备编码            string txtDeviceCode = this.tbDeviceCode.Text.Trim();List deviceCodeList = this.tbDeviceCode.MultirowValue;if (deviceCodeList != null & deviceCodeList.Count>0)            {                this.QuerySql+=" AND device_code in ("+ Mes.Core.Utility.StrUtil.BuildPara(deviceCodeList) +") ";}            else            {                if (txtDeviceCode != string.Empty)                {                    this.QuerySql+=" AND device_code "+ Mes.Core.Utility.StrUtil.ProcInput(txtDeviceCode, false);}            }            //设备名称            string txtDeviceName = this.tbDeviceName.Text.Trim();List deviceNameList = this.tbDeviceName.MultirowValue;if (deviceNameList != null & deviceNameList.Count>0)            {                this.QuerySql+=" AND device_name in ("+ Mes.Core.Utility.StrUtil.BuildPara(deviceNameList) +") ";}            else            {                if (txtDeviceName != string.Empty)                {                    this.QuerySql+=" AND device_name "+ Mes.Core.Utility.StrUtil.ProcInput(txtDeviceName, false);}            }            //mac地址            string txtMac = this.tbMacAddress.Text.Trim();List macList = this.tbMacAddress.MultirowValue;if (macList != null & macList.Count>0)            {                this.QuerySql+=" AND mac_address in ("+ Mes.Core.Utility.StrUtil.BuildPara(macList) +") ";}            else            {                if (txtMac != string.Empty)                {                    this.QuerySql+=" AND mac_address "+ Mes.Core.Utility.StrUtil.ProcInput(txtMac, false);}            }            //部门            string txtDepartment = this.tbDepartment.Text.Trim();List departmentList = this.tbDepartment.MultirowValue;if (departmentList != null & departmentList.Count>0)            {                this.QuerySql+=" AND admin_department in ("+ Mes.Core.Utility.StrUtil.BuildPara(departmentList) +") ";}            else            {                if (txtDepartment != string.Empty)                {                    this.QuerySql+=" AND admin_department "+ Mes.Core.Utility.StrUtil.ProcInput(txtDepartment, false);}            }            this.QuerySql+="  order by device_code,device_name";this.DialogResult= System.Windows.Forms.DialogResult.OK;this.Close();}        private void BaseInfoQueryForm_OnCancelQuery(object sender, EventArgs e)        {            this.tbDeviceCode.Text= this.tbDeviceName.Text=            this.tbMacAddress.Text= this.tbDepartment.Text= string.Empty;}    }}

    7)SQL

    using Mes.ControlsEx;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace BIZDeviceUseAnalysis.Sql{    class Core    {        //按天        public static string GetMainSqlByDay(string startTime, string endTime,string mac,string condition)        {            string sql = @"                        WITH baseInfoRecord AS(SELECTmac,SUM(counting) total, to_char(bmr.creation_date,'yyyy-mm-dd'),        device_code,device_nameFROMbiz_mac_record bmr, (SELECT1AScountingFROMdual),biz_device_info bdiWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ANDbmr.mac=bdi.mac_address"+mac+@""+condition+@")                      ,                        noBaseInfoAS(SELECTDISTINCTmac,SUM(counting) total, to_char(bmr.creation_date,'yyyy-mm-dd'),''device_code,''device_nameFROMbiz_mac_record bmr, (SELECT1AScountingFROMdual),biz_device_info bdiWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ANDbmr.macNOTIN(SELECTmac_addressFROMbiz_device_info)" + mac + @"" + condition + @")SELECT*FROMbaseInfoRecordUNIONALLSELECT*FROMnoBaseInfo";

                return sql;

            }

            public static string GetColumnByDay(string startTime, string endTime)

            {

                string sql = @"SELECTDISTINCTto_char(bmr.creation_date,'yyyy-mm-dd')FROMbiz_mac_record bmrWHEREbmr.creation_date >= to_date('" + startTime+ @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ORDERBYto_char(bmr.creation_date,'yyyy-mm-dd')";

                return sql;

            }

            //按周

            public static string GetMainSqlByWeek(string startTime, string endTime, string mac, string condition)

            {

                string sql = @"WITHbaseInfoRecordAS(SELECTmac,SUM(counting) total, to_char(trunc(bmr.creation_date),'yyyy-iw'),        device_code,device_nameFROMbiz_mac_record bmr, (SELECT1AScountingFROMdual),biz_device_info bdiWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ANDbmr.mac=bdi.mac_address" + mac + @"" + condition + @")                      ,                        noBaseInfoAS(SELECTDISTINCTmac,SUM(counting) total, to_char(trunc(bmr.creation_date),'yyyy-iw'),''device_code,''device_nameFROMbiz_mac_record bmr, (SELECT1AScountingFROMdual),biz_device_info bdiWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ANDbmr.macNOTIN(SELECTmac_addressFROMbiz_device_info)" + mac + @"" + condition + @")SELECT*FROMbaseInfoRecordUNIONALLSELECT*FROMnoBaseInfo";

                return sql;

            }

            public static string GetColumnByWeek(string startTime, string endTime)

            {

                string sql = @"SELECTDISTINCTto_char(bmr.creation_date,'yyyy-iw')FROMbiz_mac_record bmrWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ORDERBYto_char(bmr.creation_date,'yyyy-iw')";

                return sql;

            }

            //按月

            public static string GetMainSqlByMonth(string startTime, string endTime, string mac, string condition)

            {

                string sql = @"WITHbaseInfoRecordAS(SELECTmac,SUM(counting) total, to_char(trunc(bmr.creation_date),'yyyy-mm'),        device_code,device_nameFROMbiz_mac_record bmr, (SELECT1AScountingFROMdual),biz_device_info bdiWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ANDbmr.mac=bdi.mac_address" + mac + @"" + condition + @")                      ,                        noBaseInfoAS(SELECTDISTINCTmac,SUM(counting) total, to_char(trunc(bmr.creation_date),'yyyy-mm'),''device_code,''device_nameFROMbiz_mac_record bmr, (SELECT1AScountingFROMdual),biz_device_info bdiWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ANDbmr.macNOTIN(SELECTmac_addressFROMbiz_device_info)" + mac + @"" + condition + @")SELECT*FROMbaseInfoRecordUNIONALLSELECT*FROMnoBaseInfo";

                return sql;

            }

            public static string GetColumnByMonth(string startTime, string endTime)

            {

                string sql = @"SELECTDISTINCTto_char(bmr.creation_date,'yyyy-mm')FROMbiz_mac_record bmrWHEREbmr.creation_date >= to_date('" + startTime + @"','yyyy-mm-dd')ANDbmr.creation_date <= to_date('" + endTime + @"','yyyy-mm-dd')ORDERBYto_char(bmr.creation_date,'yyyy-mm')";

                return sql;

            }

            //设备基础信息

            public static string GetDeviceInfo()

            {

                string sql = @"select*frombiz_device_infowhere1=1";

                return sql;

            }

        }

    }

    8)运行效果

    按日

    按周

    相关文章

      网友评论

        本文标题:C#之Chart篇

        本文链接:https://www.haomeiwen.com/subject/wkthqftx.html