/// <summary> /// 更新报表的数据列 /// </summary> /// <param name="input"></param> private void SetReportColumns(ReportDataSourceInputDto input) { var template = _ReportTemplateManager.GetReportTemplateByIdAsync(input.Template_Id); XmlDocument xmlReport = new XmlDocument(); xmlReport.Load(System.AppDomain.CurrentDomain.BaseDirectory + template.Result.FilePath); XmlNode nodeDictionary = xmlReport.SelectSingleNode("/Report/Dictionary"); DelNodeDataSource(nodeDictionary, input.TableName); XmlNode nodeDataSource = xmlReport.CreateElement("TableDataSource"); SetNodeAttribute(nodeDataSource, "Name", input.TableName); SetNodeAttribute(nodeDataSource, "ReferenceName", "ds_" + input.TableName + "." + "dt_" + input.TableName); SetNodeAttribute(nodeDataSource, "DataType", "System.Int32"); SetNodeAttribute(nodeDataSource, "Enabled", "true"); var columns = GetColumnsByDataSource(input); foreach (DataColumn column in columns) { XmlNode nodeColumn = xmlReport.CreateElement("Column"); SetNodeAttribute(nodeColumn, "Name", column.ColumnName); SetNodeAttribute(nodeColumn, "DataType", column.DataType.FullName); nodeDataSource.AppendChild(nodeColumn); } nodeDictionary.AppendChild(nodeDataSource); xmlReport.Save(System.AppDomain.CurrentDomain.BaseDirectory + template.Result.FilePath); }
public async Task <bool> CreateReportDataSource(ReportDataSourceInputDto input) { var entity = input.MapTo <ReportDataSource>(); try { SetReportColumns(input); } catch (Exception ex) { throw new UserFriendlyException(ex.Message); } return(await _ReportDataSourceManager.CreateReportDataSourceAsync(entity)); }
public async Task <bool> UpdateReportDataSource(ReportDataSourceInputDto input) { var entity = await _ReportDataSourceManager.GetReportDataSourceByIdAsync(input.Id); input.MapTo(entity); try { SetReportColumns(input); } catch (Exception ex) { throw new UserFriendlyException(ex.Message); } return(await _ReportDataSourceManager.UpdateReportDataSourceAsync(entity)); }
/// <summary> /// 获取列 /// </summary> /// <param name="input"></param> /// <returns></returns> private DataColumnCollection GetColumnsByDataSource(ReportDataSourceInputDto input) { string sql = input.CommandText; string conn = ConfigurationManager.ConnectionStrings[input.ConnkeyName].ConnectionString; //List<string> resultP = GetParamsBySql(sql); List <string> resultP = GetParamsByStr(input.DataParams); OracleParameter[] paras = new OracleParameter[resultP.Count]; for (int i = 0; i < resultP.Count; i++) { paras[i] = new OracleParameter { ParameterName = resultP[i], Value = "" }; } var table = OracleDbHelper.ExecuteDataset(conn, sql, input.CommandType == 1 ? System.Data.CommandType.Text : System.Data.CommandType.StoredProcedure, paras); return(table.Tables[0].Columns); }