DataGridView添加另外一个控件。
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Drawing; 5 using System.Data; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Xml; 10 11 namespace XjxMobilenursing 12 { 13 public partial class frmNurseList : UserControl 14 { 15 #region 全局变量 16 private frmNurse myparentform = null; //父窗体 17 private string strtemplate = ""; //Web Service 返回的XML数据 18 private bool bolLook = true; //是否锁定 19 private ComboBox mySingleVeto; 20 private DataGridView mypopudatagridview = null; 21 private int iRowIndex = 0; 22 private string strrq1 = ""; 23 private int yzlx = 0; 24 private Nurseinfo fNurseinfo = null; 25 // private Dictionary<string, DataTable> conDataitems = new Dictionary<string, DataTable>(); 26 #endregion 27 public frmNurseList() 28 { 29 InitializeComponent(); 30 } 31 #region 类成员GET和SET方法 32 public frmNurse OwnerParentForm 33 { 34 get 35 { return myparentform; } 36 set 37 { this.myparentform = value; } 38 } 39 public bool bLook 40 { 41 get 42 { 43 return this.bolLook; 44 } 45 set 46 { 47 this.bolLook = value; 48 } 49 } 50 public string RQ1 51 { 52 get 53 { 54 if (!StringCommon.IsDate(this.strrq1)) 55 { 56 this.strrq1 = DateTime.Now.ToString("yyyy-MM-dd"); 57 58 } 59 return strrq1; 60 } 61 set 62 { 63 this.strrq1 = value; 64 } 65 } 66 //public Dictionary<string, DataTable> conData 67 //{ 68 // get 69 // { 70 // return conDataitems; 71 // } 72 // set { conDataitems = value; } 73 //} 74 #endregion 75 #region 重置dataGridView数据 76 public void ReflashTable() 77 { 78 try 79 { 80 if (this.NurseGridList == null) return; 81 DataTable dt = (DataTable)NurseGridList.DataSource; 82 if (dt != null) 83 { 84 dt.Rows.Clear(); 85 NurseGridList.DataSource = dt; 86 } 87 } 88 catch (Exception ex) 89 { 90 MessageBox.Show(ex.Source + ":" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 91 } 92 } 93 #endregion 94 #region get护理单记录信息XML 95 public bool getNurseListInfo(string rq1, string rq2) 96 { 97 try 98 { 99 if (this.OwnerParentForm == null) 100 return false; 101 if (!StringCommon.IsDate(rq1)) 102 { 103 rq1 = DateTime.Parse(this.OwnerParentForm.OwnerParentForm.CurrentPatientInfo.rysj).ToString("yyyy-MM-dd"); 104 } 105 if (!StringCommon.IsDate(rq2)) 106 { 107 rq2 = DateTime.Now.ToString("yyyy-MM-dd"); 108 } 109 string strresult; 110 this.strtemplate = ""; 111 strresult = this.OwnerParentForm.OwnerParentForm.Xjxinfoweb.GetNurseTableinfo(Properties.Settings.Default.strapplication_account, 112 this.OwnerParentForm.OwnerParentForm.CurrentPatientInfo.lsh, rq1, rq2); 113 114 if (strresult.IndexOf("error") > -1) 115 { 116 return false; 117 } 118 else if (strresult == "") 119 { 120 return false; 121 } 122 this.strtemplate = strresult; 123 return true; 124 } 125 catch (Exception ex) 126 { 127 MessageBox.Show(ex.Source + ":" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 128 return false; 129 } 130 } 131 #endregion 132 #region Set护理单信息XML到DataTable 133 private DataTable FromXML2DataTable(string XMLStr) 134 { 135 XmlDocument myDoc = new XmlDocument(); 136 myDoc.LoadXml(XMLStr); 137 if (string.IsNullOrEmpty(XMLStr) || !myDoc.HasChildNodes) return null; 138 DataTable dt = new DataTable(); 139 DataRow row = null; 140 DataColumn col = null; 141 //填充数据 142 foreach (XmlElement el in myDoc.SelectNodes("Nurseinfos/row")) 143 { 144 row = dt.NewRow(); 145 foreach (XmlNode node in el.ChildNodes) 146 { 147 if (!dt.Columns.Contains(node.Name)) 148 { 149 col = new DataColumn(); 150 col.ColumnName = node.Name; 151 dt.Columns.Add(col); 152 } 153 row[node.Name] = node.InnerText; 154 } 155 dt.Rows.Add(row); 156 } 157 return dt; 158 } 159 #endregion 160 #region Set护理单信息DataTable到GridView 161 public void ShowNurseTable() 162 { 163 DataTable ds = FromXML2DataTable(this.strtemplate); 164 if (ds != null && ds.Rows.Count > 0) 165 { 166 NurseGridList.AutoGenerateColumns = false; 167 NurseGridList.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 168 NurseGridList.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 169 NurseGridList.DataSource = ds; 170 NurseGridList.ClearSelection(); 171 } 172 } 173 #endregion 174 #region Set护理单GridView可编辑 175 public void SetEditNurseTable() 176 { 177 try 178 { 179 this.bLook = false; 180 this.NurseGridList.ReadOnly = this.bolLook; 181 this.NurseGridList.AllowUserToAddRows = !this.bolLook; 182 if (this.NurseGridList.RowCount <= 0) return; 183 this.NurseGridList.FirstDisplayedScrollingRowIndex = this.NurseGridList.Rows.Count - 1; 184 this.NurseGridList.Rows[this.NurseGridList.Rows.Count - 1].Selected = true; 185 this.NurseGridList.CurrentCell = this.NurseGridList.Rows[this.NurseGridList.Rows.Count - 1].Cells["rqsj"]; 186 this.NurseGridList.Focus(); 187 this.NurseGridList.BeginEdit(false); 188 } 189 catch (Exception ex) 190 { 191 MessageBox.Show("对象:" + this.GetType().Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "异常信息:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 192 } 193 } 194 #endregion 195 #region Set护理单GridView删除 196 public void SetdelNurseTable() 197 { 198 try 199 { 200 fNurseinfo = FillNurseinfo(); 201 this.yzlx = 3; 202 string requestParam = this.PkgCtrlParams(yzlx, fNurseinfo); 203 string rtn = OwnerParentForm.OwnerParentForm.Xjxinfoweb.SetNurseRequest(requestParam); 204 MessageBox.Show(rtn); 205 } 206 catch (Exception ex) 207 { 208 MessageBox.Show("对象:" + this.GetType().Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "异常信息:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 209 } 210 } 211 #endregion 212 #region 窗体初始化 213 private void frmNurseList_Load(object sender, EventArgs e) 214 { 215 try 216 { 217 this.mySingleVeto = new ComboBox(); 218 this.mySingleVeto.FormattingEnabled = true; 219 this.mySingleVeto.Items.AddRange(new object[] { 220 "", 221 "True", 222 "False"}); 223 this.mySingleVeto.BringToFront(); 224 this.mySingleVeto.SelectedIndexChanged += new System.EventHandler(this.mySingleVeto_SelectedIndexChanged); 225 //this.mySingleVeto.Click += new System.EventHandler(this.mySingleVeto_Click); 226 this.mySingleVeto.KeyUp += new System.Windows.Forms.KeyEventHandler(this.mySingleVeto_KeyUp); 227 this.mySingleVeto.Visible = false; 228 InitDataGridView(this.NurseGridList, "ZY_tHLDTJLD"); 229 this.NurseGridList.Controls.Add(this.mySingleVeto); 230 231 mypopudatagridview = new DataGridView(); 232 mypopudatagridview.Width = 200; 233 mypopudatagridview.Height = 200; 234 mypopudatagridview.AllowUserToAddRows = false; 235 mypopudatagridview.AllowUserToDeleteRows = false; 236 mypopudatagridview.AllowUserToResizeRows = false; 237 mypopudatagridview.BackgroundColor = System.Drawing.Color.White; 238 mypopudatagridview.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 239 mypopudatagridview.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.mypopudatagridview_CellClick); 240 mypopudatagridview.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 241 mypopudatagridview.MultiSelect = false; 242 mypopudatagridview.Name = "mypopudatagridview"; 243 mypopudatagridview.ReadOnly = true; 244 mypopudatagridview.RowTemplate.Height = 23; 245 mypopudatagridview.Cursor = Cursors.Hand; 246 mypopudatagridview.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; 247 mypopudatagridview.AllowUserToOrderColumns = false; 248 mypopudatagridview.RowHeadersVisible = false; 249 mypopudatagridview.Visible = false; 250 this.NurseGridList.Controls.Add(mypopudatagridview); 251 InitPopDataGridView(mypopudatagridview, "XT_TCSSZ"); 252 } 253 catch (Exception ex) 254 { 255 MessageBox.Show("对象:" + this.GetType().Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "异常信息:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 256 } 257 } 258 #endregion 259 #region 主GridView初始化 260 private void InitDataGridView(DataGridView sender, string strName) 261 { 262 try 263 { 264 DataTable dt = new DataTable(strName); 265 dt.Columns.Add("jlid"); 266 dt.Columns.Add("lsh"); 267 dt.Columns.Add("JLR"); 268 dt.Columns.Add("rqsj"); 269 dt.Columns.Add("sz"); 270 dt.Columns.Add("xybhd"); 271 dt.Columns.Add("tk_y"); 272 dt.Columns.Add("tk_z"); 273 dt.Columns.Add("dgfs_y"); 274 dt.Columns.Add("dgfs_z"); 275 dt.Columns.Add("rl_mc"); 276 dt.Columns.Add("rllx"); 277 dt.Columns.Add("rl_l"); 278 dt.Columns.Add("cl_mc"); 279 dt.Columns.Add("cllx"); 280 dt.Columns.Add("cl_l"); 281 dt.Columns.Add("bbreathingmachine"); 282 dt.Columns.Add("hx"); 283 dt.Columns.Add("s"); 284 dt.Columns.Add("f"); 285 dt.Columns.Add("qm"); 286 sender.DataSource = dt; 287 sender.AllowUserToOrderColumns = false; 288 sender.RowHeadersVisible = false; 289 sender.ReadOnly = this.bolLook; 290 sender.AllowUserToAddRows = !this.bolLook; 291 sender.Columns["jlid"].HeaderText = "jlid"; 292 sender.Columns["jlid"].Visible = false; 293 sender.Columns["lsh"].HeaderText = "lsh"; 294 sender.Columns["lsh"].Visible = false; 295 sender.Columns["JLR"].HeaderText = "JLR"; 296 sender.Columns["JLR"].Visible = false; 297 298 sender.Columns["rqsj"].HeaderText = "日期"; 299 sender.Columns["rqsj"].Width = 100; 300 // sender.Columns["rqsj"].ReadOnly = this.bolLook; 301 sender.Columns["rqsj"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 302 303 sender.Columns["sz"].HeaderText = "神志"; 304 sender.Columns["sz"].Width = 60; 305 // sender.Columns["sz"].ReadOnly = this.bolLook; 306 sender.Columns["sz"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 307 308 sender.Columns["xybhd"].HeaderText = "血氧饱和度%"; 309 sender.Columns["xybhd"].Width = 150; 310 // sender.Columns["xybhd"].ReadOnly = this.bolLook; 311 sender.Columns["xybhd"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 312 313 sender.Columns["tk_y"].HeaderText = "对光反应右"; 314 sender.Columns["tk_y"].Width = 150; 315 // sender.Columns["tk_y"].ReadOnly = this.bolLook; 316 sender.Columns["tk_y"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 317 318 sender.Columns["tk_z"].HeaderText = "对光反应左"; 319 sender.Columns["tk_z"].Width = 150; 320 // sender.Columns["tk_z"].ReadOnly = this.bolLook; 321 sender.Columns["tk_z"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 322 323 sender.Columns["dgfs_y"].HeaderText = "瞳孔(右)"; 324 sender.Columns["dgfs_y"].Width = 100; 325 // sender.Columns["dgfs_y"].ReadOnly = this.bolLook; 326 sender.Columns["dgfs_y"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 327 328 sender.Columns["dgfs_z"].HeaderText = "瞳孔(左)"; 329 sender.Columns["dgfs_z"].Width = 100; 330 // sender.Columns["dgfs_z"].ReadOnly = this.bolLook; 331 sender.Columns["dgfs_z"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 332 333 sender.Columns["rl_mc"].HeaderText = "入量名称"; 334 sender.Columns["rl_mc"].Width = 150; 335 // sender.Columns["rl_mc"].ReadOnly = this.bolLook; 336 sender.Columns["rl_mc"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 337 338 339 sender.Columns["rllx"].HeaderText = "入量(单位)"; 340 sender.Columns["rllx"].Width = 150; 341 //sender.Columns["rllx"].ReadOnly = this.bolLook; 342 sender.Columns["rllx"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 343 344 sender.Columns["rl_l"].HeaderText = "入量(量)"; 345 sender.Columns["rl_l"].Width = 100; 346 // sender.Columns["rl_l"].ReadOnly = this.bolLook; 347 sender.Columns["rl_l"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 348 349 sender.Columns["cl_mc"].HeaderText = " 出量名称"; 350 sender.Columns["cl_mc"].Width = 150; 351 // sender.Columns["cl_mc"].ReadOnly = this.bolLook; 352 sender.Columns["cl_mc"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 353 354 355 sender.Columns["cllx"].HeaderText = "出量(单位)"; 356 sender.Columns["cllx"].Width = 150; 357 // sender.Columns["cllx"].ReadOnly = this.bolLook; 358 sender.Columns["cllx"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 359 360 sender.Columns["cl_l"].HeaderText = "出量(量)"; 361 sender.Columns["cl_l"].Width = 100; 362 // sender.Columns["cl_l"].ReadOnly = this.bolLook; 363 sender.Columns["cl_l"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 364 365 sender.Columns["bbreathingmachine"].HeaderText = "呼吸机"; 366 sender.Columns["bbreathingmachine"].Width = 100; 367 //sender.Columns["bbreathingmachine"].ReadOnly = this.bolLook; 368 sender.Columns["bbreathingmachine"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 369 370 sender.Columns["hx"].HeaderText = "呼吸"; 371 sender.Columns["hx"].Width = 60; 372 // sender.Columns["hx"].ReadOnly = this.bolLook; 373 sender.Columns["hx"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 374 375 sender.Columns["s"].HeaderText = "时"; 376 sender.Columns["s"].Width = 30; 377 // sender.Columns["s"].ReadOnly = this.bolLook; 378 sender.Columns["s"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 379 380 sender.Columns["f"].HeaderText = "分"; 381 sender.Columns["f"].Width = 30; 382 // sender.Columns["f"].ReadOnly = this.bolLook; 383 sender.Columns["f"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 384 385 sender.Columns["qm"].HeaderText = "记录人"; 386 sender.Columns["qm"].Width = 100; 387 //sender.Columns["qm"].ReadOnly = this.bolLook; 388 sender.Columns["qm"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 389 390 sender.Tag = strName; 391 } 392 catch (Exception ex) 393 { 394 MessageBox.Show("对象:" + this.GetType().Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "异常信息:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 395 } 396 397 } 398 #endregion 399 #region 辅GridView初始化 400 private void InitPopDataGridView(DataGridView sender, string strName) 401 { 402 try 403 { 404 DataTable dt = new DataTable(strName); 405 dt.Columns.Add("id"); 406 dt.Columns.Add("mc"); 407 sender.DataSource = dt; 408 sender.Columns["id"].HeaderText = "序号"; 409 sender.Columns["id"].Width = 60; 410 sender.Columns["id"].ReadOnly = false; 411 sender.Columns["id"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 412 sender.Columns["mc"].HeaderText = "名称"; 413 sender.Columns["mc"].Width = 260; 414 sender.Columns["mc"].ReadOnly = false; 415 sender.Columns["mc"].CellTemplate.Style.Alignment = DataGridViewContentAlignment.MiddleLeft; 416 } 417 catch (Exception ex) 418 { 419 MessageBox.Show("对象:" + this.GetType().Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "异常信息:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 420 } 421 422 423 424 } 425 #endregion 426 #region 主GridView触发事件 427 private void NurseGridList_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 428 { 429 if (this.bLook) return; 430 if (e.RowIndex < 0) 431 { 432 return; 433 } 434 if (this.NurseGridList.Columns[e.ColumnIndex].Name.ToString().ToUpper() == "rl_l".ToUpper() 435 || this.NurseGridList.Columns[e.ColumnIndex].Name.ToString().ToUpper() == "cl_l".ToUpper()) 436 { 437 string str = e.FormattedValue.ToString(); 438 this.NurseGridList.Rows[e.RowIndex].ErrorText = ""; 439 440 if (XjxWordE.xjxformat.StringCommon.IsNumeric(str)) 441 { 442 if (double.Parse(str) < 0) 443 { 444 if (this.NurseGridList.Columns[e.ColumnIndex].Name.ToString().ToUpper() == "cl_l".ToUpper()) 445 { 446 this.NurseGridList.Rows[e.RowIndex].ErrorText = "分值输入的必须是大于或等于0的数字,请重输"; 447 } 448 else 449 { 450 this.NurseGridList.Rows[e.RowIndex].ErrorText = "数量输入的必须是大于或等于0的数字,请重输"; 451 } 452 453 MessageBox.Show(this.NurseGridList.Rows[e.RowIndex].ErrorText, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 454 455 e.Cancel = true; 456 } 457 } 458 else 459 { 460 if (this.NurseGridList.Columns[e.ColumnIndex].Name.ToString().ToUpper() == "cl_l".ToUpper()) 461 { 462 this.NurseGridList.Rows[e.RowIndex].ErrorText = "分值输入的必须是数字类型,请重输"; 463 } 464 else 465 { 466 this.NurseGridList.Rows[e.RowIndex].ErrorText = "数量输入的必须是数字类型,请重输"; 467 } 468 469 MessageBox.Show(this.NurseGridList.Rows[e.RowIndex].ErrorText, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 470 471 e.Cancel = true; 472 } 473 } 474 475 } 476 private void NurseGridList_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 477 { 478 if (this.bLook) return; 479 string kind = this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToLower(); 480 switch (kind) 481 { 482 case "sz": 483 case "tk_y": 484 case "tk_z": 485 case "dgfs_y": 486 case "dgfs_z": 487 case "rl_mc": 488 case "rllx": 489 case "cl_mc": 490 case "cllx": 491 TextBox mytextbox; 492 mytextbox = e.Control as TextBox; 493 mytextbox.Name = this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToLower(); 494 mytextbox.Tag = this.NurseGridList.CurrentCell; 495 if (mytextbox == null) return; 496 mytextbox.Click += new System.EventHandler(this.mytextbox_Click); 497 //mytextbox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.mytextbox_KeyUp); 498 break; 499 default: 500 this.mypopudatagridview.Visible = false; 501 break; 502 } 503 } 504 private void NurseGridList_CellEnter(object sender, DataGridViewCellEventArgs e) 505 { 506 if (this.bLook) return; 507 if (this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToUpper() == "bbreathingmachine".ToUpper()) 508 { 509 Rectangle rect = this.NurseGridList.GetCellDisplayRectangle(this.NurseGridList.CurrentCell.ColumnIndex, this.NurseGridList.CurrentCell.RowIndex, false); 510 this.mySingleVeto.Text = this.NurseGridList.CurrentCell.Value.ToString(); 511 this.mySingleVeto.Left = rect.Left; 512 this.mySingleVeto.Top = rect.Top; 513 this.mySingleVeto.Width = rect.Width; 514 this.mySingleVeto.Height = rect.Height; 515 this.mySingleVeto.Tag = this.NurseGridList.CurrentCell; 516 this.mySingleVeto.Visible = true; 517 this.mySingleVeto.BringToFront(); 518 this.mySingleVeto.Focus(); 519 this.mypopudatagridview.Visible = false; 520 } 521 else 522 { 523 this.mySingleVeto.Visible = false; 524 } 525 } 526 private void NurseGridList_CurrentCellChanged(object sender, EventArgs e) 527 { 528 if (this.bLook) return; 529 string kind = this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToLower(); 530 switch (kind) 531 { 532 case "sz": 533 case "tk_y": 534 case "tk_z": 535 case "dgfs_y": 536 case "dgfs_z": 537 case "rl_mc": 538 case "rllx": 539 case "cl_mc": 540 case "cllx": 541 if (this.mySingleVeto != null && this.mySingleVeto.Visible) 542 { 543 DataGridViewCell mycell = this.mySingleVeto.Tag as DataGridViewCell; 544 if (mycell == null) return; 545 mycell.Value = this.mySingleVeto.Text; 546 this.mySingleVeto.Visible = false; 547 this.mySingleVeto.Tag = null; 548 this.NurseGridList.BeginEdit(false); 549 } 550 if (this.mypopudatagridview != null) 551 { 552 DataGridViewCell mydatagridviewcell = this.mypopudatagridview.Tag as DataGridViewCell; 553 if ((mydatagridviewcell != null) && (this.NurseGridList.Columns[mydatagridviewcell.ColumnIndex].Name != kind)) 554 { 555 this.mypopudatagridview.Visible = false; 556 iRowIndex = 0; 557 this.mypopudatagridview.Tag = null; 558 this.NurseGridList.BeginEdit(false); 559 } 560 } 561 break; 562 case "bbreathingmachine": 563 if (this.mypopudatagridview != null) 564 { 565 this.mypopudatagridview.Visible = false; 566 iRowIndex = 0; 567 this.mypopudatagridview.Tag = null; 568 this.NurseGridList.BeginEdit(false); 569 } 570 break; 571 default: 572 if (this.mySingleVeto != null && this.mySingleVeto.Visible) 573 { 574 DataGridViewCell mycell = this.mySingleVeto.Tag as DataGridViewCell; 575 if (mycell == null) return; 576 mycell.Value = this.mySingleVeto.Text; 577 this.mySingleVeto.Visible = false; 578 this.mySingleVeto.Tag = null; 579 this.NurseGridList.BeginEdit(false); 580 } 581 if (this.mypopudatagridview != null) 582 { 583 DataGridViewCell mydatagridviewcell = this.mypopudatagridview.Tag as DataGridViewCell; 584 this.mypopudatagridview.Visible = false; 585 iRowIndex = 0; 586 this.mypopudatagridview.Tag = null; 587 this.NurseGridList.BeginEdit(false); 588 } 589 break; 590 } 591 } 592 private void NurseGridList_CellClick(object sender, DataGridViewCellEventArgs e) 593 { 594 if (this.bLook) return; 595 if (this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToUpper() == "rqsj".ToUpper()) 596 { 597 SelectDatetime(); 598 } 599 } 600 private void NurseGridList_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) 601 { 602 if (this.bLook) return; 603 if (this.mySingleVeto == null) return; 604 this.mySingleVeto.Visible = false; 605 } 606 private void NurseGridList_Scroll(object sender, ScrollEventArgs e) 607 { 608 if (this.bLook) return; 609 if (this.mySingleVeto == null) return; 610 this.mySingleVeto.Visible = false; 611 } 612 private void NurseGridList_RowLeave(object sender, DataGridViewCellEventArgs e) 613 { 614 fNurseinfo = FillNurseinfo(); 615 string requestParam = this.PkgCtrlParams(yzlx, fNurseinfo); 616 string rtn = OwnerParentForm.OwnerParentForm.Xjxinfoweb.SetNurseRequest(requestParam); 617 // MessageBox.Show(rtn); 618 } 619 #endregion 620 #region 日期选择事件 621 public void SelectDatetime() 622 { 623 using (frmSelectsingleDate myfrm = new frmSelectsingleDate()) 624 { 625 myfrm.RQ1 = this.RQ1; 626 if (myfrm.ShowDialog() == DialogResult.OK) 627 { 628 this.NurseGridList.Rows[this.NurseGridList.CurrentCell.RowIndex].Cells[this.NurseGridList.CurrentCell.ColumnIndex].Value = myfrm.RQ1; 629 this.NurseGridList.Rows[this.NurseGridList.CurrentCell.RowIndex].Cells["s"].Value = DateTime.Now.Hour.ToString(); 630 this.NurseGridList.Rows[this.NurseGridList.CurrentCell.RowIndex].Cells["f"].Value = DateTime.Now.Minute.ToString(); 631 this.NurseGridList.CurrentCell = this.NurseGridList.Rows[this.NurseGridList.CurrentCell.RowIndex].Cells[this.NurseGridList.CurrentCell.ColumnIndex + 1]; 632 this.NurseGridList.Focus(); 633 this.NurseGridList.BeginEdit(false); 634 } 635 } 636 } 637 #endregion 638 #region 获取控件数据小窗口grid 639 private void mytextbox_KeyUp(object sender, KeyEventArgs e) 640 { 641 string kind = this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToLower(); 642 if ((kind != "sz") && (kind != "tk_y") && (kind != "tk_z") && (kind != "dgfs_y") && (kind != "dgfs_z") && (kind != "rl_mc") && (kind != "rllx") && (kind != "cl_mc") && (kind != "cllx")) 643 { 644 e.Handled = true; 645 return; 646 } 647 switch (e.KeyCode) 648 { 649 case Keys.Down: 650 if (this.mypopudatagridview.Rows.Count < 0) return; 651 iRowIndex++; 652 if (iRowIndex >= this.mypopudatagridview.Rows.Count) iRowIndex = this.mypopudatagridview.Rows.Count - 1; 653 setSelectRowValue(iRowIndex); 654 e.Handled = true; 655 break; 656 case Keys.Up: 657 if (this.mypopudatagridview.Rows.Count < 0) return; 658 iRowIndex--; 659 if (iRowIndex < 0) iRowIndex = 0; 660 setSelectRowValue(iRowIndex); 661 e.Handled = true; 662 break; 663 case Keys.Enter: 664 if (this.mypopudatagridview.Visible && this.mypopudatagridview.Rows.Count > 0) 665 { 666 setSelectRowValue(iRowIndex); 667 } 668 System.Windows.Forms.SendKeys.Send("{TAB}"); 669 e.Handled = true; 670 break; 671 } 672 673 if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Up) return; 674 675 if (!this.mypopudatagridview.Visible) 676 { 677 Rectangle rect = this.NurseGridList.GetCellDisplayRectangle(this.NurseGridList.CurrentCell.ColumnIndex, this.NurseGridList.CurrentCell.RowIndex, false); 678 this.mypopudatagridview.Visible = true; 679 680 this.mypopudatagridview.Left = rect.Left; 681 if (rect.Top + this.mypopudatagridview.Height > this.NurseGridList.Height) 682 { 683 this.mypopudatagridview.Top = rect.Top - this.mypopudatagridview.Height; 684 } 685 else 686 { 687 this.mypopudatagridview.Top = rect.Top + rect.Height; 688 } 689 this.mypopudatagridview.Tag = this.NurseGridList.CurrentCell; 690 this.mypopudatagridview.Visible = true; 691 } 692 if (this.mypopudatagridview.Visible) 693 { 694 TextBox mytextbox = sender as TextBox; 695 string tbName = mytextbox.Name; 696 if (mytextbox == null) return; 697 if (this.NurseGridList.Columns[Name].Tag != null && this.NurseGridList.Columns[Name].Tag is DataTable) 698 { 699 this.mypopudatagridview.DataSource = this.NurseGridList.Columns[Name].Tag; 700 } 701 else 702 { 703 this.writePopDataGridView(tbName); 704 } 705 } 706 } 707 private void mytextbox_Click(object sender, EventArgs e) 708 { 709 string kind = this.NurseGridList.Columns[this.NurseGridList.CurrentCell.ColumnIndex].Name.ToString().ToLower(); 710 if ((kind != "sz") && (kind != "tk_y") && (kind != "tk_z") && (kind != "dgfs_y") && (kind != "dgfs_z") && (kind != "rl_mc") && (kind != "rllx") && (kind != "cl_mc") && (kind != "cllx")) 711 { 712 return; 713 } 714 if (!this.mypopudatagridview.Visible) 715 { 716 Rectangle rect = this.NurseGridList.GetCellDisplayRectangle(this.NurseGridList.CurrentCell.ColumnIndex, this.NurseGridList.CurrentCell.RowIndex, false); 717 this.mypopudatagridview.Visible = true; 718 719 this.mypopudatagridview.Left = rect.Left; 720 if (rect.Top + this.mypopudatagridview.Height > this.NurseGridList.Height) 721 { 722 this.mypopudatagridview.Top = rect.Top - this.mypopudatagridview.Height; 723 } 724 else 725 { 726 this.mypopudatagridview.Top = rect.Top + rect.Height; 727 } 728 this.mypopudatagridview.Tag = this.NurseGridList.CurrentCell; 729 this.mypopudatagridview.Visible = true; 730 } 731 if (this.mypopudatagridview.Visible) 732 { 733 TextBox mytextbox = sender as TextBox; 734 string tbName = mytextbox.Name; 735 if (mytextbox == null) return; 736 //if (this.conDataitems != null && this.conDataitems.Count > 0 && this.conDataitems.ContainsKey(tbName)) 737 //{ 738 // DataTable dt = this.conDataitems[tbName] as DataTable; 739 // this.mypopudatagridview.DataSource = dt; 740 //} 741 //else 742 //{ 743 // this.writePopDataGridView(tbName); 744 //} 745 if (this.NurseGridList.Columns[kind].Tag != null && this.NurseGridList.Columns[kind].Tag is DataTable) 746 { 747 this.mypopudatagridview.DataSource = this.NurseGridList.Columns[kind].Tag; 748 } 749 else 750 { 751 this.writePopDataGridView(kind); 752 } 753 } 754 755 } 756 private void mypopudatagridview_CellClick(object sender, DataGridViewCellEventArgs e) 757 { 758 if (e.RowIndex < 0) return; 759 iRowIndex = e.RowIndex; 760 setSelectRowValue(iRowIndex); 761 DataGridViewCell mydatagridviewcell = this.mypopudatagridview.Tag as DataGridViewCell; 762 DataGridViewCell mycell = this.mypopudatagridview.Tag as DataGridViewCell; 763 if (mydatagridviewcell != null) 764 { 765 this.NurseGridList.FirstDisplayedScrollingRowIndex = this.NurseGridList.Rows.Count - 1; 766 this.NurseGridList.Rows[this.NurseGridList.Rows.Count - 1].Selected = true; 767 this.NurseGridList.CurrentCell = this.NurseGridList.Rows[mycell.RowIndex].Cells[mycell.ColumnIndex + 1]; 768 this.NurseGridList.Focus(); 769 this.NurseGridList.BeginEdit(false); 770 } 771 this.mypopudatagridview.Visible = false; 772 this.mypopudatagridview.Tag = null; 773 iRowIndex = 0; 774 } 775 public void writePopDataGridView(string Name) 776 { 777 //if (this.mypopudatagridview.RowCount > 0) ((DataTable)this.mypopudatagridview.DataSource).Clear(); 778 XmlDocument myDoc = new XmlDocument(); 779 string respStr = string.Empty; 780 respStr = this.OwnerParentForm.OwnerParentForm.Xjxinfoweb.GetNurseTabinfo(Name, string.Empty); 781 if (string.IsNullOrEmpty(respStr) || respStr.IndexOf("error") > -1) 782 { 783 MessageBox.Show(respStr, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 784 return; 785 } 786 myDoc.LoadXml(respStr); 787 DataTable dt = new DataTable(); 788 DataRow row = null; 789 DataColumn col = null; 790 foreach (XmlElement el in myDoc.SelectNodes("patientinfos/patientinfo")) 791 { 792 row = dt.NewRow(); 793 foreach (XmlNode node in el.ChildNodes) 794 { 795 if (!dt.Columns.Contains(node.Name)) 796 { 797 col = new DataColumn(); 798 col.ColumnName = node.Name; 799 dt.Columns.Add(col); 800 } 801 row[node.Name] = node.InnerText; 802 } 803 dt.Rows.Add(row); 804 } 805 this.mypopudatagridview.DataSource = dt; 806 //if (!this.conDataitems.ContainsKey(Name.ToString())) 807 //{ 808 // this.conDataitems.Add(Name, dt); 809 //} 810 this.NurseGridList.Columns[Name].Tag = dt; 811 } 812 private void setSelectRowValue(int rowindex) 813 { 814 if (this.mypopudatagridview.Rows.Count < 0) return; 815 if (rowindex < 0 || rowindex > this.mypopudatagridview.Rows.Count) return; 816 this.mypopudatagridview.FirstDisplayedScrollingRowIndex = rowindex; 817 this.mypopudatagridview.Rows[rowindex].Selected = true; 818 this.NurseGridList.Rows[this.NurseGridList.CurrentCell.RowIndex].Cells[this.NurseGridList.CurrentCell.ColumnIndex].Value = this.mypopudatagridview.Rows[rowindex].Cells["mc"].Value.ToString(); 819 } 820 #endregion 821 #region 获取Combox 822 private void mySingleVeto_SelectedIndexChanged(object sender, EventArgs e) 823 { 824 return; 825 } 826 private void mySingleVeto_KeyUp(object sender, KeyEventArgs e) 827 { 828 int index = mySingleVeto.SelectedIndex; 829 switch (e.KeyCode) 830 { 831 case Keys.Up: 832 index--; 833 if (index < 0) index = 0; 834 mySingleVeto.SelectedIndex = index; 835 e.Handled = true; 836 break; 837 case Keys.Down: 838 index++; 839 if (index >= this.mySingleVeto.Items.Count) index = this.mySingleVeto.Items.Count - 1; 840 this.mySingleVeto.SelectedIndex = index; 841 e.Handled = true; 842 break; 843 case Keys.Enter: 844 DataGridViewCell mycell = this.Tag as DataGridViewCell; 845 if (mycell == null) return; 846 mycell.Value = this.mySingleVeto.Text; 847 this.NurseGridList.FirstDisplayedScrollingRowIndex = mycell.RowIndex; 848 this.NurseGridList.Rows[mycell.RowIndex].Selected = true; 849 this.NurseGridList.CurrentCell = this.NurseGridList.Rows[mycell.RowIndex].Cells[mycell.ColumnIndex + 1]; 850 this.NurseGridList.Focus(); 851 this.NurseGridList.BeginEdit(false); 852 e.Handled = true; 853 break; 854 } 855 } 856 #endregion 857 #region 获取记录 858 private Nurseinfo FillNurseinfo() 859 { 860 DataGridViewRow selectedRow = NurseGridList.CurrentRow; 861 if (selectedRow == null) 862 { 863 MessageBox.Show("请选中记录", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); 864 return null; 865 } 866 Nurseinfo myNurseinfo = new Nurseinfo(); 867 if (selectedRow.Cells["jlid"].Value + "" == "") 868 { 869 this.yzlx = 1; 870 myNurseinfo.jlid = "0"; 871 } 872 else 873 { 874 this.yzlx = 2; 875 myNurseinfo.jlid = selectedRow.Cells["jlid"].Value + ""; 876 } 877 878 myNurseinfo.lsh = selectedRow.Cells["lsh"].Value + ""; 879 myNurseinfo.jlr = selectedRow.Cells["jlr"].Value + ""; 880 myNurseinfo.rqsj = selectedRow.Cells["rqsj"].Value + ""; 881 myNurseinfo.s = selectedRow.Cells["s"].Value + ""; 882 myNurseinfo.f = selectedRow.Cells["f"].Value + ""; 883 myNurseinfo.bbreathingmachine = selectedRow.Cells["bbreathingmachine"].Value + ""; 884 myNurseinfo.hx = selectedRow.Cells["hx"].Value + ""; 885 myNurseinfo.sz = selectedRow.Cells["sz"].Value + ""; 886 myNurseinfo.s = selectedRow.Cells["s"].Value + ""; 887 myNurseinfo.xybhd = selectedRow.Cells["xybhd"].Value + ""; 888 myNurseinfo.dgfs_z = selectedRow.Cells["dgfs_y"].Value + ""; 889 myNurseinfo.tk_z = selectedRow.Cells["tk_z"].Value + ""; 890 myNurseinfo.tk_y = selectedRow.Cells["tk_y"].Value + ""; 891 myNurseinfo.rl_mc = selectedRow.Cells["rl_mc"].Value + ""; 892 myNurseinfo.rllx = selectedRow.Cells["rllx"].Value + ""; 893 myNurseinfo.rl_l = selectedRow.Cells["rl_l"].Value + ""; 894 myNurseinfo.cl_mc = selectedRow.Cells["cl_mc"].Value + ""; 895 myNurseinfo.cllx = selectedRow.Cells["cl_l"].Value + ""; 896 return myNurseinfo; 897 } 898 #endregion 899 #region 界面数据打包XML 900 private string PkgCtrlParams(int opKind, Nurseinfo oNurseinfo) 901 { 902 Patientinfo myCurrentPatientinfo = OwnerParentForm.OwnerParentForm.CurrentPatientInfo; 903 if (myCurrentPatientinfo == null || (opKind != 1 && opKind != 2 && opKind != 3)) return string.Empty; 904 XmlDocument myDoc = new XmlDocument(); 905 XmlElement root = myDoc.CreateElement("params"); 906 myDoc.AppendChild(root); 907 try 908 { 909 AppendToXml(root, "jlid", oNurseinfo.jlid);//*主键 910 AppendToXml(root, "lsh", myCurrentPatientinfo.lsh == 0 ? "" : myCurrentPatientinfo.lsh.ToString());//*患者ID 911 AppendToXml(root, "czzt", opKind.ToString());//*执行保存操作;1:增,2:改,3:删 912 AppendToXml(root, "jlr", Properties.Settings.Default.iapplication_yhid.ToString());//*操作员ID 913 } 914 catch (Exception e) 915 { 916 MessageBox.Show(this, e.Message, "出错提示", MessageBoxButtons.OK, MessageBoxIcon.Error); 917 return string.Empty; 918 } 919 if ((opKind == 1) || (opKind == 2)) 920 { 921 AppendToXml(root, "rqsj", oNurseinfo.rqsj); //*护理时间 922 AppendToXml(root, "s", oNurseinfo.s); //护理时 923 AppendToXml(root, "f", oNurseinfo.f); //护理分 924 AppendToXml(root, "bbreathingmachine", true? "1" : "0");//*呼吸机 925 AppendToXml(root, "hx", oNurseinfo.hx); //*呼吸机速率 926 AppendToXml(root, "sz", oNurseinfo.sz); //神志 927 AppendToXml(root, "xybhd", oNurseinfo.xybhd); //血氧饱和度 928 AppendToXml(root, "dgfs_z", oNurseinfo.dgfs_z); //对光反应左 929 AppendToXml(root, "dgfs_y", oNurseinfo.dgfs_y); //对光反应右 930 AppendToXml(root, "tk_z", oNurseinfo.tk_z); //瞳孔(左) 931 AppendToXml(root, "tk_y", oNurseinfo.tk_y); //瞳孔(右) 932 AppendToXml(root, "rl_mc ", oNurseinfo.rl_mc); //入量名称 933 AppendToXml(root, "rllx", oNurseinfo.rllx); //入量(单位) 934 AppendToXml(root, "rl_l", oNurseinfo.rl_l); //入量(量) 935 AppendToXml(root, "cl_mc", oNurseinfo.cl_mc); //出量名称 936 AppendToXml(root, "cllx", oNurseinfo.cllx); //出量(单位) 937 AppendToXml(root, "cl_l", oNurseinfo.cl_l); //出量(量) 938 AppendToXml(root, "jlsj", oNurseinfo.rqsj); //*记录护理时间 939 940 } 941 return myDoc.OuterXml; 942 } 943 private void AppendToXml(XmlElement root, string name, string text) 944 { 945 if (string.IsNullOrEmpty(text)) return; 946 XMLCommon.CreateChildElement(root, name, true, text); 947 } 948 #endregion 949 } 950 }