void WriteParameters() { foreach (Control ctrl in Panel1.Controls) { Rdl.Engine.ReportParameter parm = null; if (_report.ReportParameters != null && _report.ReportParameters.ContainsKey(ctrl.Name)) { parm = _report.ReportParameters[ctrl.Name]; } if (parm != null) { switch (ctrl.GetType().Name) { case "CheckBox": parm.Value = ((CheckBox)ctrl).Checked; break; case "DateTimePicker": parm.Value = ((DateTimePicker)ctrl).Value; break; case "TextBox": parm.Value = ((TextBox)ctrl).Text; break; case "ComboBox": foreach (Rdl.Engine.ParameterValue value in parm.ValidValues) { if (value.Label == ((ComboBox)ctrl).Text) { parm.Value = value.Value; } } break; case "CheckedListBox": List <object> valueArray = new List <object>(); foreach (object o in ((CheckedListBox)ctrl).CheckedItems) { foreach (Rdl.Engine.ParameterValue value in parm.ValidValues) { if (value.Label == (string)o) { valueArray.Add(value.Value); } } } parm.Value = valueArray.ToArray(); break; } } } }
private void RecurseLoadChildControls(Control ctrl) { foreach (Control ctrl1 in ctrl.Controls) { RecurseLoadChildControls(ctrl1); } if (ctrl is UpdatePanel) { RecurseLoadChildControls(((UpdatePanel)ctrl).ContentTemplateContainer); } Rdl.Engine.ReportParameter parm = null; if (ctrl.ID != null && _report != null && _report.ReportParameters != null && _report.ReportParameters.ContainsKey(ctrl.ID)) { parm = _report.ReportParameters[ctrl.ID]; } if (parm != null) { switch (ctrl.GetType().Name) { case "CheckBox": parm.Value = ((CheckBox)ctrl).Checked; break; case "TextBox": string[] values; if (parm.Nullable && ((TextBox)ctrl).Text.Trim() == string.Empty) { parm.Value = null; break; } if (parm.MultiValue) { if (((TextBox)ctrl).Text.Trim().Length > 0) { values = ((TextBox)ctrl).Text.Split(new char[] { ',' }); for (int i = 0; i < values.Length; i++) { values[i] = values[i].Trim(); } } else { values = new string[0]; } } else { values = new string[1] { ((TextBox)ctrl).Text } }; for (int i = 0; i < values.Length; i++) { switch (parm.DataType.Name) { case "DateTime": DateTime dt; if (!DateTime.TryParse(values[i], out dt)) { OnParameterError(new ParameterErrorEventArgs(_report, "Invalid date")); return; } values[i] = dt.ToString("yyyy-MM-dd HH:mm:ss"); break; case "Boolean": Boolean bv; if (!Boolean.TryParse(values[i], out bv)) { OnParameterError(new ParameterErrorEventArgs(_report, "Invalid Boolean value")); return; } values[i] = bv.ToString(); break; case "Int32": Int32 iv; if (!Int32.TryParse(values[i], out iv)) { OnParameterError(new ParameterErrorEventArgs(_report, "Invalid numeric value")); return; } values[i] = iv.ToString(); break; case "Single": Single sv; if (!Single.TryParse(values[i], out sv)) { OnParameterError(new ParameterErrorEventArgs(_report, "Invalid numeric value")); return; } values[i] = sv.ToString(); break; default: break; } } if (parm.MultiValue) { parm.Value = values; } else { parm.Value = values[0]; } break; case "DropDownList": if (((DropDownList)ctrl).Text == string.Empty) { if (parm.Nullable) { parm.Value = null; } else { parm.Value = string.Empty; } break; } foreach (Rdl.Engine.ParameterValue value in parm.ValidValues) { if (value.Label == ((DropDownList)ctrl).SelectedItem.Text) { parm.Value = value.Value; } } break; case "CheckBoxList": List <object> valueArray = new List <object>(); foreach (ListItem li in ((CheckBoxList)ctrl).Items) { if (li.Selected) { foreach (Rdl.Engine.ParameterValue value in parm.ValidValues) { if (value.Label == li.Text) { valueArray.Add(value.Value); } } } } parm.Value = valueArray.ToArray(); break; } } }