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;
                    }
                }
            }
        }
Exemple #2
0
        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;
                }
            }
        }