//初始化報表的各個項目
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;
}
}
//}
}
}
}
}
}
}