Grd++和C# winform的對接

       //初始化報表的各個項目
        private void GridReportInit()
        {
           
                Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(Report_Initialize);  //初始化報表來源,即報表存儲的位置
                Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(Report_FetchRecord);//畫報表的函數調用,主要是畫出報表的格式   這個事件主要是在存在明細網格時纔會起作用
          
        }
        //導入報表的存儲路徑
        void Report_Initialize()
        {
                string FilePath = Application.StartupPath+@"\Resources\ReportTemplate\入院評估單.grf"; 
                Report.LoadFromFile(FilePath);//導入報表的存儲路徑
                Report_FetchRecord();
         
        }
        //畫報表的函數調用,主要是畫出報表的格式
        void Report_FetchRecord()
        {
                //定義報表的存儲表
                DataTable m_dtReport = new DataTable();
                //取出報表需要的數據從查詢的數據中Dsreportdetalrec
                m_dtReport = Dsreportdetalrec.Tables[0];
                if (m_dtReport.Rows.Count > 0)//表中存在數據
                {
                        IGRControl control = Report.FindFirstControl();//定義IGRControl類型控件並且取出報表中的第一個控件值
                        while (control != null)//循環給每個控件賦值
                        {
                            if (control is IGRStaticBox)  //判斷控件是否是靜態框
                            {
                                if (control.Name != null)//取出靜態框中的tag的值即是屬性標識的值
                                {
                                    if (control.Name == "評估者")
                                    {
                                        DataRow[] drRows1 = m_dtReport.Select(string.Format("item_name='{0}'", control.Name));
                                        if (drRows1.Length > 0)
                                        {
                                            if (control.AsStaticBox.Text == null)
                                            {
                                                string[] str = drRows1[0]["item_value"].ToString().Split('/');
                                                if (str.Length > 0 && !string.IsNullOrWhiteSpace(str[0].ToString()))
                                                {
                                                    control.AsStaticBox.Text = str[0].ToString();//給控件賦值
                                                }
                                                else
                                                {
                                                    control.AsStaticBox.Text = "";
                                                }
                                            }
                                        }

                                    }
                                    else if (control.Name == "過敏源")
                                    {
                                        DataRow[] drRows = m_dtReport.Select(string.Format("item_name='{0}'", control.Name));
                                        if (drRows.Length > 0)
                                        {
                                            if (control.AsStaticBox.Text == null)
                                            {
                                                if (drRows[0]["item_value"].ToString() == "" || drRows[0]["item_value"].ToString() == "無" || string.IsNullOrEmpty(drRows[0]["item_value"].ToString()))
                                                {
                                                    control.AsStaticBox.ForeColor =(uint)System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
                                                }
                                                else
                                                {
                                                    control.AsStaticBox.ForeColor = (uint)System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
                                                }
                                                control.AsStaticBox.Text = drRows[0]["item_value"].ToString();//給控件賦值
                                            }
                                        }
                                    }
                                    else
                                    {
                                        DataRow[] drRows = m_dtReport.Select(string.Format("item_name='{0}'", control.Name));
                                        if (drRows.Length > 0)
                                        {
                                            if (control.AsStaticBox.Text == null)
                                            {
                                                control.AsStaticBox.Text = drRows[0]["item_value"].ToString();//給控件賦值
                                            }
                                            //else if (control.Name.Contains(drRows[0]["item_value"].ToString()))//判斷此控件的名稱中是否包含這個項目的值
                                            //{
                                            //  control.AsStaticBox.Text = "[√]" + drRows[0]["item_value"].ToString();//給控件賦值                                                         
                                            //}
                                        }
                                    }          
                                }
                            }
                            control = Report.FindNextControl();//尋找下一個控件
                        }
                        Report.ControlByName("deptName").AsStaticBox.Text = LocalSetting.NursingUnitName;  //獲取科別
                        Report.ControlByName("bedNo").AsStaticBox.Text = LocalSetting.BedNo;//獲取病人牀號
                        Report.ControlByName("inpNo").AsStaticBox.Text = LocalSetting.PatientId;//獲取病人ID
                        Report.ControlByName("admissionDate").AsStaticBox.Text = LocalSetting.AdmissionDate.ToString("yyyy-MM-dd");//獲取病人入院時間      
                        //Report.ControlByName("recordDate").AsStaticBox.Text = m_dtReport.Rows[0]["time_point"].ToString();
                       // Report.ControlByName("creator").AsStaticBox.Text = m_dtReport.Rows[0]["user_name"].ToString();
                }
          
        }
打印
#region 打印預覽按鈕
        private void GBtnPrint_Click(object sender, EventArgs e)
        {


            //先查詢當前的數據
            try
            {
                this.PrintView();
               
            }
            catch (Exception ex)
            {
                //異常處理
                LocalSetting.Error(ex);
            }
         
        }
        #endregion
函數的調用
 public override void PrintView()
        {
            Dsreportdetalrec.Clear();
            var message = new MessageBasic { Msg = "QueryreportdetalrecEntity", NameSpace = "Documents.Records.AdmissionRecords" };
            message.AddValuePair("patientId", LocalSetting.PatientId);
            message.AddValuePair("visitId", LocalSetting.VisitId);
            message.AddValuePair("theme_code", "AdmissionRecords");
            IMsgHelper msgHelper = MsgFactory.CreateMsgHelper(LocalSetting.MsgType);
            var result = msgHelper.Send(message);
            //MessageResult對象中的Message屬性由服務端的返回消息決定
            Dsreportdetalrec = result.DataSet;


            if (Dsreportdetalrec.Tables.Count > 0)
            {
                //取出result這個裏面的DataSet  然後給各個控件賦上值{    }
                DoQueryREPORTDETAILREC(pNurseinfo, Dsreportdetalrec);  //傳入參數TabControl和DateSet
                // MessageBox.Show("查詢成功!"); 
            }
            else
            {
                DoClear(pNurseinfo); //清空各個控件上的值
            }
            //打印預覽
            Report.PrintPreview(true);
            txt_patient_name.Text = LocalSetting.Name.ToString();
            this.txt_patient_name.Focus();
        }


        //查詢出數據
        DataSet Dsreportdetalrec = new DataSet();
        //創建報表對象的創建
        private GridppReport Report = new GridppReport();



        //給各個控件賦值
        public void DoQueryREPORTDETAILREC(Panel panel, DataSet DaSt) //傳入參數Panel
        {
            DataTable dttem = new DataTable();
            dttem = DaSt.Tables[0];
             foreach (Control cons in panel.Controls) //循環panel找出的控件
             {
                if (cons is GroupBox)
                {
                    GroupBox gb = cons as GroupBox; //循環GroupBox頁找出其中的控件個數
                    foreach (Control control in gb.Controls)
                    {
                        if (control is TextBoxEx)  //找出TextBox
                        {
                            TextBoxEx txt = control as TextBoxEx;
                            if (txt.ItemName == "評估者")
                            {
                                DataRow[] drRows = dttem.Select(string.Format("item_name='{0}'", txt.ItemName));
                                if (drRows.Length > 0)
                                {
                                    txt.Text = drRows[0]["item_value"].ToString();
                                    txt.RecId = drRows[0]["rec_id"].ToString();
                                }
                                else 
                                {
                                    txt.Text = "";
                                    txt.RecId = null;
                                }
                            }
                            else
                            {
                                DataRow[] drRows = dttem.Select(string.Format("item_name='{0}'", txt.ItemName));
                                if (drRows.Length > 0)
                                {
                                    txt.Text = drRows[0]["item_value"].ToString();
                                    txt.RecId = drRows[0]["rec_id"].ToString();
                                }
                                else
                                {
                                    //if (txt.ItemName == "入院診斷")
                                    //{
                                    //    txt.Text = LocalSetting.Patient.DIAGNOSIS;
                                    //    txt.RecId = null;
                                    //}
                                    //else if (txt.ItemName == "姓名")
                                    //{
                                    //    txt.Text = LocalSetting.Patient.NAME;
                                    //    txt.RecId = null;
                                    //}
                                    //else if (txt.ItemName == "年齡")
                                    //{
                                    //    txt.Text = DateUtil.CaculateAgeFunction(LocalSetting.Patient.DATE_OF_BIRTH.Value, LocalSetting.Patient.ADMISSION_DATE.Value);
                                    //    txt.RecId = null;
                                    //}
                                    //else
                                    //{
                                        txt.Text = "";
                                        txt.RecId = null;
                                    //}
                                }
                            }
                        }
                        else if (control is ComboBoxEx)   //找出ComboBox
                        {
                            ComboBoxEx cb = control as ComboBoxEx;
                            if (cb.ItemName == "過敏源")
                            {
                                DataRow[] drRows1 = dttem.Select(string.Format("item_name='{0}'", cb.ItemName));
                                if (drRows1.Length > 0)
                                {
                                    if (drRows1[0]["item_value"].ToString() == "無" || string.IsNullOrEmpty(drRows1[0]["item_value"].ToString()) || drRows1[0]["item_value"].ToString() == "")
                                    {
                                        cb.ForeColor = Color.Black;
                                    }
                                    else
                                    {
                                        cb.ForeColor = Color.Red;
                                    }
                                    cb.Text = drRows1[0]["item_value"].ToString();
                                    cb.RecId = drRows1[0]["rec_id"].ToString();
                                }
                                else
                                {
                                    cb.ForeColor = Color.Black;
                                    cb.Text = "";
                                    cb.RecId = null;
                                }
                            }
                            else
                            {
                                DataRow[] drRows = dttem.Select(string.Format("item_name='{0}'", cb.ItemName));
                                if (drRows.Length > 0)
                                {
                                    cb.Text = drRows[0]["item_value"].ToString();
                                    cb.RecId = drRows[0]["rec_id"].ToString();
                                }
                                //else if (cb.ItemName == "護理等級")
                                //{
                                //    cb.Text = LocalSetting.Patient.NURSE_LEVEL;
                                //    cb.RecId = null;
                                //
                                else
                                {
                                    cb.Text = "";
                                    cb.RecId = null;
                                }
                            }
                        }
                        else if (control is DateTimePickerEx)
                        {
                            DateTimePickerEx datm = control as DateTimePickerEx;
                            DataRow[] drRows = dttem.Select(string.Format("item_name='{0}'", datm.ItemName));
                            if (drRows.Length > 0)
                            {
                                DateTime dtTime = new DateTime();
                                DateTime.TryParse(drRows[0]["item_value"].ToString(), out dtTime);
                                datm.Value = dtTime;
                                datm.RecId = drRows[0]["rec_id"].ToString();
                            }
                            else
                            {
                                datm.Value=DateTime.Now;
                                datm.RecId = null;
                            }
                        }
                        else if (control is GroupBoxEx)   //內部選擇項的GroupBox
                        {
                            GroupBoxEx GB = control as GroupBoxEx;
                            DataRow[] drRows = dttem.Select(string.Format("item_name='{0}'", GB.ItemName));
                            if (drRows.Length > 0)
                            {
                                foreach (Control ctrl in GB.Controls)  //循環內部控件GroupBox找出RadioButtonEx
                                {
                                    if (ctrl is RadioButtonEx)
                                    {
                                        RadioButtonEx RB = ctrl as RadioButtonEx;
                                        if (RB.Text.ToString() == drRows[0]["item_value"].ToString())
                                        {
                                            GB.RecId = drRows[0]["rec_id"].ToString();
                                            RB.Checked = true;
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                //if (GB.ItemName == "性別")
                                //{
                                //    GB.RecId = null;
                                //    foreach (Control ctrl in GB.Controls)  //循環內部控件GroupBox找出RadioButtonEx
                                //    {
                                //        if (ctrl is RadioButtonEx)
                                //        {
                                //            RadioButtonEx RB = ctrl as RadioButtonEx;
                                //            if (RB.Text == LocalSetting.Sex)
                                //            {
                                //                RB.Checked = true;
                                //            }
                                //            else
                                //            {
                                //                RB.Checked = false;
                                //            }
                                //        }
                                //    }
                                //}
                                //else
                                //{
                                    GB.RecId = null;
                                    foreach (Control ctrl in GB.Controls)  //循環內部控件GroupBox找出RadioButtonEx
                                    {
                                        if (ctrl is RadioButtonEx)
                                        {
                                            RadioButtonEx RB = ctrl as RadioButtonEx;
                                            RB.Checked = false;
                                        }
                                    }
                                //}
                            }
                        }
                    }
                }
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章