/// <summary> /// 将一列变成可绑定的多列 最大只有5大列 /// </summary> /// <param name="printInCommonView"></param> private void ConvertForDuoLie(PrintInCommonView printInCommonView) { List <PrintInCommonItemView> printInCommonItemViewListOld = printInCommonView.PrintInCommonTabViewList1.PrintInCommonItemViewList; if (printInCommonItemViewListOld == null) { return; } Dictionary <string, string> dicstr = InCommonNoteBiz.GetReportxmlCol(printInCommonView); if (!dicstr.ContainsKey("maxCols")) { return; } string maxcols = dicstr["maxCols"]; //大列数 int maxcolsint; //大列 bool ismax = int.TryParse(maxcols, out maxcolsint); if (maxcolsint <= 1 || maxcolsint > 5) { return; } List <PrintInCommonItemView> printInCommonItemViewListNew = new List <PrintInCommonItemView>(); for (int i = 0; i < printInCommonItemViewListOld.Count; i++) { int yushu = i % maxcolsint; if (yushu == 0) { PrintInCommonItemView printInCommonItemView = new PrintInCommonItemView(); if (maxcolsint >= 5 && (i + 4 < printInCommonItemViewListOld.Count)) { printInCommonItemView.PrintInCommonItemView5 = printInCommonItemViewListOld[i + 4]; } if (maxcolsint >= 4 && (i + 3 < printInCommonItemViewListOld.Count)) { printInCommonItemView.PrintInCommonItemView4 = printInCommonItemViewListOld[i + 3]; } if (maxcolsint >= 3 && (i + 2 < printInCommonItemViewListOld.Count)) { printInCommonItemView.PrintInCommonItemView3 = printInCommonItemViewListOld[i + 2]; } if (maxcolsint >= 2 && (i + 1 < printInCommonItemViewListOld.Count)) { printInCommonItemView.PrintInCommonItemView2 = printInCommonItemViewListOld[i + 1]; } printInCommonItemView.PrintInCommonItemView1 = printInCommonItemViewListOld[i]; printInCommonItemViewListNew.Add(printInCommonItemView); //添加整理好的一行 } } printInCommonView.PrintInCommonTabViewList1.PrintInCommonItemViewList = printInCommonItemViewListNew; }
public void FillOtherInfo(PrintInCommonItemView printInCommonItemViewOther) { try { if (printInCommonItemViewOther == null) { return; } XmlNode otherInfoNode = CommonMethods.GetElementByTagName("OtherInfo", doc); Type type = printInCommonItemViewOther.GetType(); PropertyInfo pro = null; foreach (XmlNode node in otherInfoNode.ChildNodes) { int x = int.Parse(node.Attributes["x"].Value == "" ? "0" : node.Attributes["x"].Value); int y = int.Parse(node.Attributes["y"].Value == "" ? "0" : node.Attributes["y"].Value); int w = int.Parse(node.Attributes["width"].Value == "" ? totalWidth.ToString() : node.Attributes["width"].Value); int h = int.Parse(node.Attributes["height"].Value == "" ? "0" : node.Attributes["height"].Value); string text = node.Attributes["text"].Value; int fontsize = int.Parse(node.Attributes["fontsize"].Value == "" ? "0" : node.Attributes["fontsize"].Value); FontStyle fs = node.Attributes["bold"].Value == "1" ? FontStyle.Bold : FontStyle.Regular; string dataField = node.Attributes["datafield"].Value; pro = type.GetProperty(dataField); Font f = new Font("新宋体", fontsize, fs); string horAlign = node.Attributes["align"].Value; switch (horAlign) { case "-1": sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; break; case "0": case "": sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; break; case "1": sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Near; break; } if (pro == null || pro.GetValue(printInCommonItemViewOther, null) == null) { gra.DrawString(text.Replace("@", ""), f, Brushes.Black, new Rectangle(x, y, w, h), sf); } else { gra.DrawString(text.Replace("@", pro.GetValue(printInCommonItemViewOther, null).ToString()), f, Brushes.Black, new Rectangle(x, y, w, h), sf); } } } catch (Exception ex) { throw ex; } }
/// <summary> /// 打印表格时一行不过换行显示 /// </summary> /// <param name="printInCommonView"></param> private void ConvertForChangeRow(PrintInCommonView printInCommonView) { List <PrintInCommonItemView> printInCommonItemViewListOld = printInCommonView.PrintInCommonTabViewList1.PrintInCommonItemViewList; if (printInCommonItemViewListOld == null) { return; } List <PrintInCommonItemView> printInCommonItemViewListNew = new List <PrintInCommonItemView>(); Dictionary <string, ColmonXMLEntity> dicwordcounts = InCommonNoteBiz.GetReportxmlwords(printInCommonView); //xml中属性 和最大字符数 if (dicwordcounts == null || dicwordcounts.Count == 0) { return; } foreach (var inCommonItem in printInCommonItemViewListOld) { int maxrow = -1; //用于获取一个对象中被分成的最大行数 Dictionary <string, string> dicNeedRows = new Dictionary <string, string>(); //需要换行的列 值 foreach (var item in dicwordcounts) { if (item.Value == null) { break; } string proName = item.Key; //属性名 PropertyInfo property = inCommonItem.GetType().GetProperty(proName); //获取该对象的该属性 if (property != null) { string valuestr = ""; object valueobj = property.GetValue(inCommonItem, null); if (valueobj != null) { valuestr = valueobj.ToString(); } dicNeedRows.Add(proName, valuestr); int zheshu = GetNeedRows(valuestr, item.Value).Count; if (zheshu > maxrow) { maxrow = zheshu; } } } if (maxrow == -1) { continue; } if (maxrow == 1 || maxrow == 0) { PrintInCommonItemView printInCommonItemView = inCommonItem; printInCommonItemViewListNew.Add(printInCommonItemView); } else { List <PrintInCommonItemView> printInCommonItemOnemore = new List <PrintInCommonItemView>(); //一个正常行最终变成的多行 for (int i = 0; i < maxrow; i++) { PrintInCommonItemView printInCommonItemView; if (i == 0) { printInCommonItemView = inCommonItem; } else { printInCommonItemView = new PrintInCommonItemView(); } foreach (var itemneed in dicNeedRows) //对各列进行截取 { string proName = itemneed.Key; PropertyInfo property = printInCommonItemView.GetType().GetProperty(proName); //获取该对象的该属性 string rowindexvalue = GetIndexStr(i, GetNeedRows(itemneed.Value, dicwordcounts[proName])); property.SetValue(printInCommonItemView, rowindexvalue, null); } printInCommonItemOnemore.Add(printInCommonItemView); } printInCommonItemOnemore[printInCommonItemOnemore.Count - 1].RecordDoctorName = printInCommonItemOnemore[0].RecordDoctorName; printInCommonItemOnemore[printInCommonItemOnemore.Count - 1].RecordDoctorId = printInCommonItemOnemore[0].RecordDoctorId; printInCommonItemOnemore[printInCommonItemOnemore.Count - 1].RecordDoctorImg = printInCommonItemOnemore[0].RecordDoctorImg; printInCommonItemOnemore[0].RecordDoctorName = ""; printInCommonItemOnemore[0].RecordDoctorId = ""; printInCommonItemOnemore[0].RecordDoctorImg = ""; printInCommonItemViewListNew.AddRange(printInCommonItemOnemore); } } printInCommonView.PrintInCommonTabViewList1.PrintInCommonItemViewList = printInCommonItemViewListNew; }