private void DrawChart(DataRow r) { List <int> list = new List <int>(); GetDevTreeNodeByParent(Convert.ToInt32(r["node_id"].ToString()), ref list); string strnodelist = ""; list.ForEach(item => strnodelist += item + ","); strnodelist = strnodelist.TrimEnd(','); //string strformat = "select case work_state when 0 then '离线' when 1 then '故障' when 2 then '待机' when 3 then '工作' end as work_stat,count(dev_id) as devcount from (SELECT IFNULL((select work_state from pile_state_t where pile_state_t.dev_id = hd_pile_info_t.dev_id ORDER BY pile_state_t.date_time desc LIMIT 1 ),0) as work_state, hd_pile_info_t.dev_id FROM hd_pile_info_t where node_id in (" + strnodelist + ")) as t group by work_state"; string strformat = "select dev_id,0 as work_state FROM hd_pile_info_t where node_id in (" + strnodelist + ")"; MySqlDataAdapter sms_dav = new MySqlDataAdapter(strformat, Framework.Environment.SMS_CONN); DataSet sms_dsv = new DataSet(); sms_dav.Fill(sms_dsv, "T"); DataTable t2 = new DataTable("t2"); DataColumn key = t2.Columns.Add("work_state_id", typeof(int)); t2.PrimaryKey = new DataColumn[] { key }; t2.Columns.Add("work_stat", typeof(string)); t2.Columns.Add("devcount", typeof(int)); t2.Rows.Add(0, "离线", 0); t2.Rows.Add(1, "故障", 0); t2.Rows.Add(2, "待机", 0); t2.Rows.Add(3, "工作", 0); t2.Rows.Add(4, "充电", 0); foreach (DataRow item in sms_dsv.Tables[0].Rows) { int ws = 0; DataModel.CDZDevStatusInfo info = Framework.Container.Instance.DevStateService.GetDevByID(item["dev_id"].ToString()); if (info != null) { ws = info.WorkStat; } t2.Rows.Find(ws)["devcount"] = Convert.ToInt32(t2.Rows.Find(ws)["devcount"]) + 1; } sms_dsv.Tables.Clear(); sms_dsv.Tables.Add(t2); ////第二步:绑定一个数据源 //if (sms_dsv.Tables[0].Rows.Count > 0) // Chartlet1.BindChartData(sms_dsv); chart1.DataSource = sms_dsv; chart1.Series["Series1"].XValueMember = "work_stat"; chart1.Series["Series1"].YValueMembers = "devcount"; chart1.DataBind(); }
private void FillDevData(DataRow r) { List <int> list = new List <int>(); GetDevTreeNodeByParent(Convert.ToInt32(r["node_id"].ToString()), ref list); string strnodelist = ""; list.ForEach(item => strnodelist += item + ","); strnodelist = strnodelist.TrimEnd(','); //string sms_sqlstr2 = "SELECT *, case IFNULL((select work_state from pile_state_t where pile_state_t.dev_id = hd_pile_info_t.dev_id ORDER BY pile_state_t.date_time desc LIMIT 1 ),0) when 0 then '离线' when 1 then '故障' when 2 then '待机' when 3 then '工作' end as work_state FROM hd_pile_info_t where node_id in (" + strnodelist + ")"; string sms_sqlstr2 = "SELECT *, '离线' as work_state FROM hd_pile_info_t where node_id in (" + strnodelist + ")"; MySqlDataAdapter sms_da_pile = new MySqlDataAdapter(sms_sqlstr2, Framework.Environment.SMS_CONN); DataSet sms_ds_pile = new DataSet(); sms_da_pile.Fill(sms_ds_pile, "T"); bs = new BindingSource(sms_ds_pile, "T"); dataGridViewX1.DataSource = bs; foreach (DataGridViewRow item in dataGridViewX1.Rows) { DataModel.CDZDevStatusInfo info = Framework.Container.Instance.DevStateService.GetDevByID(item.Cells["dev_id"].Value.ToString()); if (info != null) { uint ws = info.WorkStat; if (ws == 0) { item.Cells["work_state"].Value = "离线"; } if (ws == 1) { item.Cells["work_state"].Value = "故障"; } if (ws == 2) { item.Cells["work_state"].Value = "待机"; } if (ws == 3) { item.Cells["work_state"].Value = "工作"; } if (ws == 4) { item.Cells["work_state"].Value = "充电"; } } } }