使用GetItemParameters设置DefaultValues传递Parametervalues

时间:2015-03-30 03:34:07

标签: c# reporting-services

我有一个自定义网络表单来创建SSRS订阅。为了确定是否存在默认复选框以及是否选中该复选框,我会对Parameter.DefaultValues进行采样。 (如果Param.DefaultValues == null则不创建默认复选框)

当我使用级联参数(依赖项)时,我在为依赖项设置Parametervalues之后,多次调用GetItemParameters。但是,我注意到当我在Param A中选择一个值时 - Param B所依赖的值,将值填充到ParameterValue数组中并传递给GetITemParameters实际上是返回参数A的defaultvalue [0]并使用所选值填充它..这会导致显示默认值选项。

我找不到任何说明这是一个功能的文档,这个领域的专家是否可以帮助我理解为什么这会为没有参数的参数创建DefaultValues?

这里显示的代码非常多,所以我会尝试将其删除......

Param A“Branch”没有默认值

Param B“Manager”没有默认值,并且取决于Param A选择值

SetParamValues(Parameters);  //Params do not have DefaultValues after this call
Parameters = _Rs.GetItemParameters(_ThisReportPath, null, true, _ParamDependenciesValues, null);  //Param A now has a default value = selectedValue

protected void SetParamValues(ItemParameter[] Params)
{
    foreach (ItemParameter Rp in Params)
    {
        if (Rp.Dependencies != null)
        {
            foreach (var d in Rp.Dependencies)
            {
                var MyParamValue = _ParamDependenciesValues.FirstOrDefault(c => c.Name == d);
                if (MyParamValue == null)
                {
                    Array.Resize(ref _ParamDependenciesValues, _ParamDependenciesValues.Count() + 1);
                    var MyNewParamValue = new ParameterValue {Name = d};
                    _ParamDependenciesValues[_ParamDependenciesValues.Length - 1] = MyNewParamValue;
                    MyParamValue = _ParamDependenciesValues.FirstOrDefault(c => c.Name == d);
                }

                if (_Dependencies.Contains(d))
                {
                    if (MyParamValue != null && _Dependencies[d] != null)
                        MyParamValue.Value = _Dependencies[d].ToString();  

                }
            }
        }
    }
}

_Dependencies只是一个包含键值对的HashTable

编辑: 仍在寻找这个问题的优雅解决方案。我添加了一个hacky解决方法,我在创建默认复选框之前检查了参数是否具有依赖关系。然而,这现在导致@StartDate和@EndDate参数出现问题,因为@EndDate参数(显然)依赖于@StartDate - 即使两个默认值都基于公式(例如= DateAdd(“d”, - 14) ,今天()))。因此,在我的“解决方法”到位后,我无法为@EndDate选择默认值。

0 个答案:

没有答案