private static void GenSingleTableRdlc(string rdlcFileName, ReportParameter rptParams, DataTable tabDesigner, string RealTableName, bool isDetails, DataRelation relation) { DataTable dtDataDic = GetDDTable(rptParams.ClientType, rptParams.SelectAlias, RealTableName); XmlDocument doc = new XmlDocument(); doc.Load(rdlcFileName); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("ms", ms); nsmgr.AddNamespace("rd", rd); //生成DataSources GenDataSources(doc, nsmgr); //生成DataSets GenDataSets(doc, nsmgr, tabDesigner); XmlNode startNode = GetStartXPathNode(doc, nsmgr, false, isDetails); XmlNode temNode = startNode; //ReportItems if (!isDetails) { temNode = doc.CreateElement("ReportItems", startNode.NamespaceURI); } ReportTable rptTable = isDetails ? rptParams.RptSet.ReportTables[1] : rptParams.RptSet.ReportTables[0]; if (isDetails) { XmlNode nReport = doc.SelectSingleNode("ms:Report", nsmgr); //ReportParameters XmlNode nReportParameters = doc.CreateElement("ReportParameters", nReport.NamespaceURI); foreach (DataColumn parentCol in relation.ParentColumns) { //ReportParameter XmlNode nReportParameter = doc.CreateElement("ReportParameter", nReport.NamespaceURI); XmlAttribute aReportParameterName = doc.CreateAttribute("Name"); aReportParameterName.Value = "p" + parentCol.ColumnName; nReportParameter.Attributes.Append(aReportParameterName); //ReportParameter.DataType XmlNode nDataType = doc.CreateElement("DataType", nReport.NamespaceURI); string type = parentCol.DataType.ToString(); if (type.IndexOf('.') != -1) type = type.Substring(type.LastIndexOf('.') + 1); if (type.StartsWith("Int")) type = "Integer"; nDataType.InnerText = type; nReportParameter.AppendChild(nDataType); //ReportParameter.AllowBlank XmlNode nAllowBlank = doc.CreateElement("AllowBlank", nReport.NamespaceURI); nAllowBlank.InnerText = "true"; nReportParameter.AppendChild(nAllowBlank); //ReportParameter.Prompt XmlNode nPrompt = doc.CreateElement("Prompt", nReport.NamespaceURI); nPrompt.InnerText = parentCol.ColumnName; nReportParameter.AppendChild(nPrompt); nReportParameters.AppendChild(nReportParameter); } nReport.AppendChild(nReportParameters); //caption float childColLeft = 0.25f; float childColTop = 0.25f; //XmlDocument docrealContext = startNode.OwnerDocument; //XmlNode temNode = startNode; //temNode = docrealContext.CreateElement("ReportItems", temNode.NamespaceURI); foreach (DataColumn parentCol in relation.ParentColumns) { //caption GenLabel(temNode, childColLeft, childColTop, "cap" + parentCol.ColumnName, GetFieldCaption(dtDataDic, parentCol.ColumnName), rptParams.HorGaps, rptParams.VertGaps, false); childColLeft += (float)Convert.ToDouble(rptParams.HorGaps); //value GenLabel(temNode, childColLeft, childColTop, "txt" + parentCol.ColumnName, "=Parameters!p" + parentCol.ColumnName + ".Value", rptParams.HorGaps, rptParams.VertGaps, false); childColLeft += (float)Convert.ToDouble(rptParams.HorGaps) + 0.5f; } } else { //给Title赋值 XmlNode nTitleValue = GetTitleNode(doc, nsmgr, false).SelectSingleNode("ms:Value", nsmgr); nTitleValue.InnerText = rptTable.TableDescription; } #region GenDataRegion //float curLeft = 0.5f; float curTop = 0.5f; if (isDetails) { curTop = GetDataRegionTop(doc, nsmgr, false, isDetails); } //Table XmlNode nTable = doc.CreateElement("Table", startNode.NamespaceURI); XmlAttribute aTableName = doc.CreateAttribute("Name"); aTableName.Value = "table1"; nTable.Attributes.Append(aTableName); if (isDetails) { //Filters XmlNode nFilters = doc.CreateElement("Filters", nTable.NamespaceURI); for (int i = 0; i < relation.ParentColumns.Length; i++) { //Filters.Filter XmlNode nFilter = doc.CreateElement("Filter", nTable.NamespaceURI); //Filters.Filter.Operator XmlNode nOperator = doc.CreateElement("Operator", nTable.NamespaceURI); nOperator.InnerText = "Equal"; nFilter.AppendChild(nOperator); //Filters.Filter.FilterValues XmlNode nFilterValues = doc.CreateElement("FilterValues", nTable.NamespaceURI); //Filters.Filter.FilterValues.FilterValue XmlNode nFilterValue = doc.CreateElement("FilterValue", nTable.NamespaceURI); nFilterValue.InnerText = "=Parameters!p" + relation.ParentColumns[i].ColumnName + ".Value"; nFilterValues.AppendChild(nFilterValue); nFilter.AppendChild(nFilterValues); //Filters.Filter.FilterExpression XmlNode nFilterExpression = doc.CreateElement("FilterExpression", nTable.NamespaceURI); nFilterExpression.InnerText = "=Fields!" + relation.ChildColumns[i].ColumnName + ".Value"; nFilter.AppendChild(nFilterExpression); nFilters.AppendChild(nFilter); } nTable.AppendChild(nFilters); } //Table.Left XmlNode nTableLeft = doc.CreateElement("Left", startNode.NamespaceURI); nTableLeft.InnerText = "0.5cm"; nTable.AppendChild(nTableLeft); //Table.Top XmlNode nTableTop = doc.CreateElement("Top", startNode.NamespaceURI); nTableTop.InnerText = curTop.ToString() + "cm"; nTable.AppendChild(nTableTop); //Table.DataSetName XmlNode nTableDataSetName = doc.CreateElement("DataSetName", startNode.NamespaceURI); nTableDataSetName.InnerText = "NewDataSet_" + tabDesigner.TableName; nTable.AppendChild(nTableDataSetName); //Table.ZIndex XmlNode nTableZIndex = doc.CreateElement("ZIndex", startNode.NamespaceURI); nTableZIndex.InnerText = "2"; nTable.AppendChild(nTableZIndex); //Table.Width XmlNode nWidth = doc.CreateElement("Width", startNode.NamespaceURI); nWidth.InnerText = (2.7f * rptTable.ReportColumns.Count).ToString() + "cm"; nTable.AppendChild(nWidth); //Table.Style XmlNode nTableStyle = doc.CreateElement("Style", startNode.NamespaceURI); //Table.Style.FontFamily XmlNode nFontFamily = doc.CreateElement("FontFamily", startNode.NamespaceURI); nFontFamily.InnerText = "PMingLiU"; nTableStyle.AppendChild(nFontFamily); nTable.AppendChild(nTableStyle); //Table.TableGroups if (HasGroupCondition(rptTable)) { GenTableGroups(nTable, rptTable, rptParams, RealTableName); } //Table.Header XmlNode nHeader = doc.CreateElement("Header", startNode.NamespaceURI); GenTableRows(nHeader, rptTable, rptParams, "hd", rptParams.ClientType, rptParams.SelectAlias, RealTableName); //Table.Header.RepeatOnNewPage XmlNode nRepeatOnNewPage = doc.CreateElement("RepeatOnNewPage", startNode.NamespaceURI); nRepeatOnNewPage.InnerText = "true"; nHeader.AppendChild(nRepeatOnNewPage); nTable.AppendChild(nHeader); //Table.Details XmlNode nDetails = doc.CreateElement("Details", startNode.NamespaceURI); GenTableRows(nDetails, rptTable, rptParams, "cnt", rptParams.ClientType, rptParams.SelectAlias, RealTableName); nTable.AppendChild(nDetails); //Table.TableColumns GenTableColumns(nTable, rptTable.ReportColumns.Count, rptParams.HorGaps); temNode.AppendChild(nTable); if (!isDetails) { startNode.AppendChild(temNode); } #endregion doc.Save(rdlcFileName); }
private ReportParameter GetRptParams() { ReportParameter rptParams = new ReportParameter(); string dsName = "NewDataSet"; if (_isWebReport) { rptParams.RptRootName = this.cmbRootName.Text; rptParams.RptXSDFile = this.cmbXSDName.Text; if (this.cmbXSDName.Text.IndexOf(".xsd") != -1) dsName = this.cmbXSDName.Text.Substring(0, this.cmbXSDName.Text.IndexOf(".xsd")); } else { rptParams.RptProjName = this.cmbProName.Text; rptParams.RptXSDFile = this.cmbWinXSDName.Text; if (this.cmbWinXSDName.Text.IndexOf(".xsd") != -1) dsName = this.cmbWinXSDName.Text.Substring(0, this.cmbWinXSDName.Text.IndexOf(".xsd")); } rptParams.RptFileNames = new string[] { this.txtRptFileName.Text, this.txtDetailsRptFileName.Text }; rptParams.IsMasterDetails = this.chkIsMasterDetails.Checked; rptParams.RptStyle = (EEPReportStyle)this.cmbMasterReportStyle.SelectedIndex; rptParams.LayoutColumnNum = (int)this.numLayoutColumn.Value; rptParams.SelectAlias = this.cmbSelectAlias.Text; rptParams.ClientType = (ClientType)this.cmbDataBaseType.SelectedIndex; rptParams.RptSet = new ReportSet(dsName); rptParams.HorGaps = this.tbHorGaps.Text; rptParams.VertGaps = this.tbVertGaps.Text; foreach (System.Windows.Forms.TreeNode tabNode in this.tvGroupSelect.Nodes) { ReportTable tab = null; if (rptParams.IsMasterDetails) { if (ds.Relations.Count > 0 && tabNode.Text != ds.Relations[0].ParentTable.TableName) tab = new ReportTable(tabNode.Text); else tab = new ReportTable(tabNode.Text, this.txtRptCaption.Text); } else { tab = new ReportTable(tabNode.Text, this.txtRptCaption.Text); } foreach (System.Windows.Forms.TreeNode colNode in tabNode.Nodes) { tab.ReportColumns.Add(new ReportColumn(colNode.Text, colNode.Checked)); } rptParams.RptSet.ReportTables.Add(tab); } return rptParams; }
private static void GenSingleLabelRdlc(string rdlcFileName, ReportParameter rptParams, DataTable tabDesigner, string RealTableName, bool isMaster, string detailsRptFileName, DataColumn[] relationParentColumns) { //DataTable dtDataDic = GetDDTable(rptParams.ClientType, rptParams.SelectAlias, tabDesigner.TableName); DataTable dtDataDic = GetDDTable(rptParams.ClientType, rptParams.SelectAlias, RealTableName); XmlDocument doc = new XmlDocument(); doc.Load(rdlcFileName); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("ms", ms); nsmgr.AddNamespace("rd", rd); //生成DataSources GenDataSources(doc, nsmgr); //生成DataSets GenDataSets(doc, nsmgr, tabDesigner); //生成List GenList(doc, nsmgr, rptParams, tabDesigner.TableName); XmlNode startNode = GetStartXPathNode(doc, nsmgr, true, isMaster); //给Title赋值 XmlNode nTitleValue = GetTitleNode(doc, nsmgr, true).SelectSingleNode("ms:Value", nsmgr); ReportTable rptTable = rptParams.RptSet.ReportTables[0]; nTitleValue.InnerText = rptTable.TableDescription; #region GenDataRegion // Top Init float curLeft = 0.5f; float curTop = 0.5f; int layoutIndex = 0; XmlDocument docrealContext = startNode.OwnerDocument; XmlNode temNode = startNode; if (!isMaster) { temNode = docrealContext.CreateElement("ReportItems", temNode.NamespaceURI); } for (int i = 0; i < rptTable.ReportColumns.Count; i++) { string colName = rptTable.ReportColumns[i].ColumnName; string EditMask = GetFieldEditMask(dtDataDic, colName); if (layoutIndex >= rptParams.LayoutColumnNum) { layoutIndex = 0; curLeft = 0.5f; curTop += 0.94f; //GenLabel GenLabel(temNode, curLeft, curTop, "lbl" + colName, GetFieldCaption(dtDataDic, colName) + ":", rptParams.HorGaps, rptParams.VertGaps, false); //GenrTextBox curLeft += (float)Convert.ToDouble(rptParams.HorGaps); GenLabel(temNode, curLeft, curTop, "txt" + colName, EditMask, rptParams.HorGaps, rptParams.VertGaps, false); layoutIndex++; curLeft += (float)Convert.ToDouble(rptParams.HorGaps) + 0.5f; } else { //GenLabel GenLabel(temNode, curLeft, curTop, "lbl" + colName, GetFieldCaption(dtDataDic, colName) + ":", rptParams.HorGaps, rptParams.VertGaps, false); //GenrTextBox curLeft += (float)Convert.ToDouble(rptParams.HorGaps); GenLabel(temNode, curLeft, curTop, "txt" + colName, EditMask, rptParams.HorGaps, rptParams.VertGaps, false); layoutIndex++; curLeft += (float)Convert.ToDouble(rptParams.HorGaps) + 0.5f; } } if (!isMaster) { startNode.AppendChild(temNode); } GenReportBodyHeight(doc, curTop, nsmgr, isMaster); #endregion if (isMaster) { XmlNode nSubReport = GetStartXPathNode(doc, nsmgr, true, isMaster).SelectSingleNode("ms:Subreport[@Name='subreport1']", nsmgr); //Parameters XmlNode nParameters = doc.CreateElement("Parameters", nSubReport.NamespaceURI); foreach (DataColumn col in relationParentColumns) { //Parameters.Parameter XmlNode nParameter = doc.CreateElement("Parameter", nSubReport.NamespaceURI); XmlAttribute aParamName = doc.CreateAttribute("Name"); aParamName.Value = "p" + col.ColumnName; nParameter.Attributes.Append(aParamName); //Parameters.Parameter.Value string EditMask = GetFieldEditMask(dtDataDic, col.ColumnName); XmlNode nParamValue = doc.CreateElement("Value", nSubReport.NamespaceURI); nParamValue.InnerText = EditMask; nParameter.AppendChild(nParamValue); nParameters.AppendChild(nParameter); } nSubReport.AppendChild(nParameters); nSubReport.SelectSingleNode("ms:ReportName", nsmgr).InnerText = detailsRptFileName; } doc.Save(rdlcFileName); }
private static void GenSingleTableRdlc(string rdlcFileName, ReportParameter rptParams, DataTable tabDesigner, string RealTableName) { GenSingleTableRdlc(rdlcFileName, rptParams, tabDesigner, RealTableName, false, null); }
private static void GenList(XmlDocument doc, XmlNamespaceManager nsmgr, ReportParameter rptParams, string designerTableName) { XmlNode nBodyRptItems = doc.SelectSingleNode("ms:Report/ms:Body/ms:ReportItems", nsmgr); XmlNode nRect = nBodyRptItems.SelectSingleNode("ms:Rectangle[@Name='rectContainer']", nsmgr); nBodyRptItems.RemoveChild(nRect); //List XmlNode nList = doc.CreateElement("List", nBodyRptItems.NamespaceURI); XmlAttribute aListName = doc.CreateAttribute("Name"); aListName.Value = "lstContainer"; nList.Attributes.Append(aListName); //生成Group设置 if (HasGroupCondition(rptParams.RptSet.ReportTables[0])) { //Grouping XmlNode nGrouping = doc.CreateElement("Grouping", nList.NamespaceURI); XmlAttribute aGroupingName = doc.CreateAttribute("Name"); aGroupingName.Value = "lstContainer_Details_" + designerTableName; nGrouping.Attributes.Append(aGroupingName); //Grouping.PageBreakAtEnd XmlNode nPageBreakAtEnd = doc.CreateElement("PageBreakAtEnd", nList.NamespaceURI); nPageBreakAtEnd.InnerText = "true"; nGrouping.AppendChild(nPageBreakAtEnd); //Grouping.GroupExpressions XmlNode nGroupExpressions = doc.CreateElement("GroupExpressions", nList.NamespaceURI); List<ReportColumn> lstGroupConditionFields = GetGroupConditionRptColumns(rptParams.RptSet.ReportTables[0]); foreach (ReportColumn cdtField in lstGroupConditionFields) { //Grouping.GroupExpressions.GroupExpression XmlNode nGroupExpression = doc.CreateElement("GroupExpression", nList.NamespaceURI); nGroupExpression.InnerText = "=Fields!" + cdtField.ColumnName + ".Value"; nGroupExpressions.AppendChild(nGroupExpression); } nGrouping.AppendChild(nGroupExpressions); nList.AppendChild(nGrouping); } //List.ReportItems XmlNode nListRptItems = doc.CreateElement("ReportItems", nBodyRptItems.NamespaceURI); nListRptItems.AppendChild(nRect); nList.AppendChild(nListRptItems); //List.Style XmlNode nListStyle = doc.CreateElement("Style", nBodyRptItems.NamespaceURI); //List.Style.FontFamily XmlNode nFont = doc.CreateElement("FontFamily", nBodyRptItems.NamespaceURI); nFont.InnerText = "PMingLiU"; nListStyle.AppendChild(nFont); nList.AppendChild(nListStyle); nBodyRptItems.AppendChild(nList); }
private static void GenMasterDetailsRdlc(string rdlcMasterFileName, string rdlcDetailsFileName, ReportParameter rptParams, DataSet dsDesigner, string masterRealTableName, string detailRealTabelName) { DataRelation relation = dsDesigner.Relations[0]; //Master string rdlcName = rdlcDetailsFileName.Substring(rdlcDetailsFileName.LastIndexOf('\\') + 1, rdlcDetailsFileName.LastIndexOf('.') - rdlcDetailsFileName.LastIndexOf('\\') - 1); try { GenSingleLabelRdlc(rdlcMasterFileName, rptParams, dsDesigner.Tables[0], masterRealTableName, true, rdlcName, relation.ParentColumns); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } //Details try { GenSingleTableRdlc(rdlcDetailsFileName, rptParams, dsDesigner.Tables[1], detailRealTabelName, true, relation); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public static void GenWinReportFiles(Project ownerProj, ProjectItem projItem, ReportParameter rptParams, List<string> rptFileNames, List<string> RealTableName) { DataSet dsDesigner = new DataSet(); string projDir = ownerProj.FullName.Substring(0, ownerProj.FullName.IndexOf(ownerProj.Name)); string ctPath = EEPRegistry.Client; string ct = ""; if (ctPath.ToLower().IndexOf("eepnetclient") != -1) ct = "eepnetclient"; else if (ctPath.ToLower().IndexOf("eepnetflclient") != -1) ct = "eepnetflclient"; if (!string.IsNullOrEmpty(ct)) ctPath = ctPath.Substring(0, ctPath.ToLower().IndexOf(ct)); dsDesigner.ReadXmlSchema(projDir + ownerProj.Name + "\\" + projItem.Name); if (rptParams.RptSet.ReportTables.Count == 1) // Single { string filename = GetRptFileName(rptFileNames[0]); if (!IsFileExisted(ownerProj.ProjectItems, filename)) return; if (rptParams.RptStyle == EEPReportStyle.Label) { ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\SingleLabel.rdlc"); genItem.Name = filename; try { GenSingleLabelRdlc(projDir + ownerProj.Name + "\\" + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else if (rptParams.RptStyle == EEPReportStyle.Table) { ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\SingleTable.rdlc"); genItem.Name = filename; try { GenSingleTableRdlc(projDir + ownerProj.Name + "\\" + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else if (rptParams.RptSet.ReportTables.Count >= 2) // Master-Details { string masterFileName = GetRptFileName(rptFileNames[0]); string detailsFileName = GetRptFileName(rptFileNames[1]); string masterRealTableName = RealTableName[0]; string detailRealTableName = RealTableName[1]; if (!IsFileExisted(ownerProj.ProjectItems, masterFileName) || !IsFileExisted(ownerProj.ProjectItems, detailsFileName)) return; ProjectItem masterItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\LabelMaster.rdlc"); masterItem.Name = masterFileName; ProjectItem detailsItem = ownerProj.ProjectItems.AddFromFileCopy(ctPath + @"EEPNetReport\TableDetails.rdlc"); detailsItem.Name = detailsFileName; try { GenMasterDetailsRdlc(projDir + ownerProj.Name + "\\" + masterItem.Name, projDir + ownerProj.Name + "\\" + detailsItem.Name, rptParams, dsDesigner, masterRealTableName, detailRealTableName); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public static void GenWebReportFiles(ProjectItem ownerProj, ProjectItem projItem, ReportParameter rptParams, List<string> rptFileNames, List<string>RealTableName) { DataSet dsDesigner = new DataSet(); string projDir = ownerProj.ContainingProject.FullName; string dir = projDir + ownerProj.Name + "\\"; dsDesigner.ReadXmlSchema(dir + projItem.Name); if (rptParams.RptSet.ReportTables.Count == 1) // Single { string filename = GetRptFileName(rptFileNames[0]); if (!IsFileExisted(ownerProj.ProjectItems, filename)) return; if (rptParams.RptStyle == EEPReportStyle.Label) { ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\SingleLabel.rdlc"); genItem.Name = filename; GenSingleLabelRdlc(dir + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]); } else if (rptParams.RptStyle == EEPReportStyle.Table) { ProjectItem genItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\SingleTable.rdlc"); genItem.Name = filename; GenSingleTableRdlc(dir + filename, rptParams, dsDesigner.Tables[0], RealTableName[0]); } } else if (rptParams.RptSet.ReportTables.Count >= 2) // Master-Details { string masterFileName = GetRptFileName(rptFileNames[0]); string detailsFileName = GetRptFileName(rptFileNames[1]); string masterRealTableName = RealTableName[0]; string detailRealTableName = RealTableName[1]; if (!IsFileExisted(ownerProj.ProjectItems, masterFileName) || !IsFileExisted(ownerProj.ProjectItems, detailsFileName)) return; ProjectItem masterItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\LabelMaster.rdlc"); masterItem.Name = masterFileName; ProjectItem detailsItem = ownerProj.ProjectItems.AddFromFileCopy(projDir + @"Template\TableDetails.rdlc"); detailsItem.Name = detailsFileName; GenMasterDetailsRdlc(dir + masterItem.Name, dir + detailsItem.Name, rptParams, dsDesigner, masterRealTableName, detailRealTableName); } }
public static void GenTableRows(XmlNode nParent, ReportTable rptTable, ReportParameter rptParams, string tag, ClientType dataBaseType, string dbName, string RealTableName) { XmlDocument doc = nParent.OwnerDocument; //TableRows XmlNode nTableRows = doc.CreateElement("TableRows", nParent.NamespaceURI); //TableRows.TableRow XmlNode nTableRow = doc.CreateElement("TableRow", nParent.NamespaceURI); GenTableCells(nTableRow, rptTable, rptParams, tag, dataBaseType, dbName, RealTableName); //TableRows.TableRow.Height XmlNode nHeight = doc.CreateElement("Height", nParent.NamespaceURI); nHeight.InnerText = rptParams.VertGaps + "cm"; nTableRow.AppendChild(nHeight); nTableRows.AppendChild(nTableRow); nParent.AppendChild(nTableRows); }
public static void GenTableGroups(XmlNode nParent, ReportTable rptTable, ReportParameter rptParams, string RealTableName) { XmlDocument doc = nParent.OwnerDocument; //TableGroups XmlNode nTableGroups = doc.CreateElement("TableGroups", nParent.NamespaceURI); //TableGroups.TableGroup XmlNode nTableGroup = doc.CreateElement("TableGroup", nParent.NamespaceURI); //TableGroups.TableGroup.Header XmlNode nHeader = doc.CreateElement("Header", nParent.NamespaceURI); GenTableRows(nHeader, rptTable, rptParams, "hdg", ClientType.ctMsSql, string.Empty, RealTableName); nTableGroup.AppendChild(nHeader); //TableGroups.TableGroup.Grouping XmlNode nGrouping = doc.CreateElement("Grouping", nParent.NamespaceURI); XmlAttribute aGroupingName = doc.CreateAttribute("Name"); aGroupingName.Value = "table1_Group1"; nGrouping.Attributes.Append(aGroupingName); //TableGroups.TableGroup.Grouping.PageBreakAtEnd XmlNode nPageBreakAtEnd = doc.CreateElement("PageBreakAtEnd", nParent.NamespaceURI); nPageBreakAtEnd.InnerText = "true"; nGrouping.AppendChild(nPageBreakAtEnd); //TableGroups.TableGroup.Grouping.GroupExpressions XmlNode nGroupExpressions = doc.CreateElement("GroupExpressions", nParent.NamespaceURI); List<ReportColumn> lstGroupConditionFields = GetGroupConditionRptColumns(rptTable); foreach (ReportColumn cdtField in lstGroupConditionFields) { //TableGroups.TableGroup.Grouping.GroupExpressions.GroupExpression XmlNode nGroupExpression = doc.CreateElement("GroupExpression", nParent.NamespaceURI); nGroupExpression.InnerText = "=Fields!" + cdtField.ColumnName + ".Value"; nGroupExpressions.AppendChild(nGroupExpression); } nGrouping.AppendChild(nGroupExpressions); nTableGroup.AppendChild(nGrouping); nTableGroups.AppendChild(nTableGroup); nParent.AppendChild(nTableGroups); }
public static void GenTableCells(XmlNode nParent, ReportTable rptTable, ReportParameter rptParams, string tag, ClientType databaseType, string dbName, string RealTableName) { DataTable tabDataDic = null; //if (tag == "hd") //{ tabDataDic = GetDDTable(databaseType, dbName, RealTableName); //} XmlDocument doc = nParent.OwnerDocument; //TableCells XmlNode nTableCells = doc.CreateElement("TableCells", nParent.NamespaceURI); List<ReportColumn> lstGCols = GetGroupConditionRptColumns(rptTable); foreach (ReportColumn rptCol in rptTable.ReportColumns) { if (!lstGCols.Contains(rptCol)) { lstGCols.Add(rptCol); } } foreach (ReportColumn rptCol in lstGCols) { //TableCells.TableCell XmlNode nTableCell = doc.CreateElement("TableCell", nParent.NamespaceURI); //TableCells.TableCell.ReportItems XmlNode nReportItems = doc.CreateElement("ReportItems", nParent.NamespaceURI); //TableCell Expression if (tag == "hd") { GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, GetFieldCaption(tabDataDic, rptCol.ColumnName), rptParams.HorGaps, rptParams.VertGaps, true); } else if (tag == "cnt") { if (!rptCol.IsGroupCondition) { string EditMask = GetFieldEditMask(tabDataDic, rptCol.ColumnName); GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, EditMask, rptParams.HorGaps, rptParams.VertGaps, true); } else { GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, "", rptParams.HorGaps, rptParams.VertGaps, true); } } else if (tag == "hdg") { if (rptCol.IsGroupCondition) { string EditMask = GetFieldEditMask(tabDataDic, rptCol.ColumnName); GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, EditMask, rptParams.HorGaps, rptParams.VertGaps, true); } else { GenLabel(nReportItems, 0, 0, tag + rptCol.ColumnName, "", rptParams.HorGaps, rptParams.VertGaps, true); } } nTableCell.AppendChild(nReportItems); nTableCells.AppendChild(nTableCell); } nParent.AppendChild(nTableCells); }