Exemple #1
0
        public void BindData()
        {
            dt_Alert = new DataTable();

            //서버리스트 읽어오기
            string MyServerList = "";

            cloud.SetCmd("Cloud");
            cloud.get_MyServerList(MemberNum);

            foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows)
            {
                MyServerList += dr["ServerNum"].ToString() + ",";
            }

            MyServerList = MyServerList.Substring(0, MyServerList.Length - 1);

            int nReturn = cloud.get_ServerStatus(MyServerList);

            if (cloud.dsReturn.Tables[0].Rows.Count > 0)
            {
                MyServerList = "";

                foreach (DataRow dr in cloud.dsReturn.Tables[0].Select("ServerType = 'Web'"))
                {
                    MyServerList += dr["ServerNum"].ToString() + ",";
                }

                MyServerList = MyServerList.Substring(0, MyServerList.Length - 1);
            }

            nReturn           = cloud.get_Dashboard(MyServerList);;
            dt_w_Dashboard    = Lib.ConvertingProc.w_Dashboard(cloud.dsReturn.Tables[0]);
            gvList.DataSource = dt_w_Dashboard;

            nReturn = nReturn = cloud.get_Dashboard_Chart(MyServerList);
            dt_w_Dashboard_chart = Lib.ConvertingProc.ChangeDashboardColumnName(cloud.dsReturn.Tables[0]);

            //각 차트에서 참조해서 사용할 공통 데이터 테이블 생성
            nReturn = cloud.get_PerfvaluesData_Company(CompanyNum);

            //신규추가 2017-09-23
            if (cloud.dsReturn.Tables[0].Rows.Count > 0)
            {
                //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록
                DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable)));
                //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사
                //DataTable dt_struct = new DataTable();
                dt_PerfmonValue = tester.Clone();
                dt_PerfmonValue.AcceptChanges();
                // 이후 dt_struct 에 계속 merge (union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요
                foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows)
                {
                    DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable)));

                    //신규추가 2017-09-23 데이터 머지 = mssql union
                    //신규추가 2017-09-23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx
                    dt_PerfmonValue.Merge(dt_tmp);
                }
            }

            //dt_FreeDisk 데이터 테이블 만들기
            var test = from r in dt_PerfmonValue.AsEnumerable()
                       where (r.Field <string>("PCID") == "P018" || r.Field <string>("PCID") == "P164" || r.Field <string>("PCID") == "P015" || r.Field <string>("PCID") == "P190" || r.Field <string>("PCID") == "P194") && !r.Field <string>("InstanceName").Contains("_Total") && !r.Field <string>("InstanceName").Contains("HarddiskVolume")
                       select r;

            dt_FreeDisk = dt_PerfmonValue.Clone();

            foreach (DataRow r in test)
            {
                var newRow = dt_FreeDisk.NewRow();
                newRow.ItemArray = r.ItemArray;
                dt_FreeDisk.Rows.Add(newRow);//I'm doubtful if you need to call this or not
            }

            dt_FreeDisk = Lib.ConvertingProc.SetDiskProc_All(dt_FreeDisk);
            gvList.DataBind();

            //Alert Message 로딩
            //nReturn = cloud.get_AlertMessage(MyServerList, numAlertDataDuration);

            //if (cloud.dsReturn.Tables[0].Rows.Count > 0)
            //{
            //    //데이터 테이블 구조생성용으로 첫번째 json데이터를 불러와서 컬럼명을 자동셋팅하도록
            //    DataTable tester = (DataTable)JsonConvert.DeserializeObject(((string)cloud.dsReturn.Tables[0].Rows[0]["Data_Json"]), (typeof(DataTable)));
            //    //tester 에는 실제로 데이터가 들어가잇고 clone 을 이용해 dt_Struct 에 데이터테이블 구조만 복사
            //    DataTable dt_struct = new DataTable();
            //    dt_Alert = tester.Clone();
            //    dt_Alert.Columns.Add("RepeatCnt");
            //    dt_Alert.AcceptChanges();
            //    //이후 dt_struct 에 계속 merge(union) 하여 하나로 합체 테스트로 돌려보니 rowcount 8만 정도 나왓네요
            //    foreach (DataRow dr in cloud.dsReturn.Tables[0].Rows)
            //    {
            //        DataTable dt_tmp = (DataTable)JsonConvert.DeserializeObject(((string)dr["Data_Json"]), (typeof(DataTable)));

            //        //신규추가 2017 - 09 - 23 데이터 머지 = mssql union
            //        //신규추가 2017 - 09 - 23 참조 https://msdn.microsoft.com/ko-kr/library/fk68ew7b(v=vs.110).aspx
            //        dt_Alert.Merge(dt_tmp);
            //    }
            //}
            //cloud.dsReturn.Dispose();
        }