using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using CMS.FormEngine; using CMS.GlobalHelper; using CMS.Reporting; using CMS.UIControls; using CMS.ExtendedControls; public partial class CMSModules_Reporting_Dialogs_ReportParametersSelector : CMSModalPage { /// /// OnInit. /// protected override void OnInit(EventArgs e) { ScriptHelper.RegisterWOpenerScript(Page); CurrentMaster.Title.TitleText = ResHelper.GetString("rep.webparts.reportparameterstitle"); CurrentMaster.Title.TitleImage = GetImageUrl("Design/Selectors/selecttransformation.png"); // Load data for this form int reportID = QueryHelper.GetInteger("ReportID", 0); hdnGuid.Value = QueryHelper.GetString("GUID", String.Empty); ReportInfo ri = ReportInfoProvider.GetReportInfo(reportID); if (ri == null) { return; } FormInfo fi = new FormInfo(ri.ReportParameters); bfParameters.FormInformation = fi; bfParameters.SubmitButton.Visible = false; bfParameters.Mode = FormModeEnum.Update; // Get dataset from cache DataSet ds = (DataSet)WindowHelper.GetItem(hdnGuid.Value); DataRow dr = fi.GetDataRow(); fi.LoadDefaultValues(dr, true); if (ds == null) { if (dr.ItemArray.Length > 0) { // Set up grid if (RequestHelper.IsPostBack()) { bfParameters.DataRow = fi.GetDataRow(); } else { bfParameters.DataRow = dr; } } } // Set data set given from cache if ((ds != null) && (ds.Tables.Count > 0) && (ds.Tables[0].Rows.Count > 0)) { //Merge with default data from report MergeDefaultValuesWithData(dr, ds.Tables[0].Rows[0]); //Set row to basic form bfParameters.DataRow = dr; } // Test if there is any item visible in report parameters bool itemVisible = false; List items = fi.ItemsList; foreach (IFormItem item in items) { FormFieldInfo ffi = item as FormFieldInfo; if (ffi != null) { if (ffi.Visible) { itemVisible = true; break; } } } if (!itemVisible) { pnlInfo.Visible = true; lblInfo.Text = GetString("rep.parameters.noparameters"); btnOK.Enabled = false; } base.OnInit(e); } /// /// Merge default values with data row. If column not exist in data row default value is loaded. /// /// Default data row /// Changed data row protected void MergeDefaultValuesWithData(DataRow defaultRow, DataRow dataRow) { // Search all columns in defualt report parameters foreach (DataColumn col in dataRow.Table.Columns) { string sourceColumnName = col.ColumnName; if (defaultRow.Table.Columns.Contains(sourceColumnName)) { // Use try-catch block, to prevent error in conversion among different data types (string->int). try { defaultRow[sourceColumnName] = dataRow[sourceColumnName]; } catch { } } } } protected void Page_Load(object sender, EventArgs e) { btnOK.Text = GetString("general.ok"); btnCancel.Text = GetString("general.cancel"); } protected void btnOK_Click(object sender, EventArgs e) { // If data are valid if (bfParameters.ValidateData()) { // Fill BasicForm with user data bfParameters.SaveData(null); if (bfParameters.DataRow != null) { int reportID = QueryHelper.GetInteger("ReportID", 0); ReportInfo ri = ReportInfoProvider.GetReportInfo(reportID); if (ri == null) { return; } FormInfo fi = new FormInfo(ri.ReportParameters); DataRow defaultRow = fi.GetDataRow(); fi.LoadDefaultValues(defaultRow); // Load default parameters to items ,where displayed in edit form not checked List items = fi.ItemsList; foreach (IFormItem item in items) { FormFieldInfo ffi = item as FormFieldInfo; if ((ffi != null) && (!ffi.Visible)) { bfParameters.DataRow[ffi.Name] = defaultRow[ffi.Name]; } } WindowHelper.Add(hdnGuid.Value, bfParameters.DataRow.Table.DataSet); } // Refreshh opener update panel script ltlScript.Text = ScriptHelper.GetScript("wopener.refresh (); CloseDialog()"); } } }