MultiValue参数

时间:2009-02-11 19:42:03

标签: asp.net reporting-services

我正在开发一个将报告服务报告呈现为PDF的Web应用程序,我的一个要求是允许多个位置包含在同一报告中。为了解决这个问题,我创建了一个多值报告参数,它似乎在使用RS UI等时可以解决问题。但是,我正在使用webservice来报告服务,并且在我的生活中无法弄清楚如何设置要识别为具有多个值的参数的值。

我尝试过简单地将其设置为“LOC1,LOC2”,但是它被选为单个值。我也试过“LOC1”+ System.Environment.NewLine +“Loc2”。

2 个答案:

答案 0 :(得分:1)

如果您愿意在另一端解析它,可以将其作为逗号分隔的字符串发送。很多语言都有一个String.Split(“,”)样式方法,你可以使用它。

或者,您可以构造一个数组(或列表或集合)并将其作为参数传递,但这将涉及更改Web服务方法上的合同。

答案 1 :(得分:1)

想出来,你必须在相同的名称下分别使用每个值,片段:

        //Register parameters
    ArrayList<ParameterValue> parmValues;

    for(Map.Entry<String,String> entry:reportParams.entrySet()) { 
        //is it multi-value?
        if(entry.getValue().contains(",")) {
            //yes, add multiple ParameterValues under the same name 
            //  with each different value
            for(String mval:entry.getValue().split(",")) {
                ParameterValue pv = new ParameterValue();
                pv.setName(entry.getKey());
                pv.setValue(mval.trim());
                parmValues.add(pv);
            }
        } else {
            //no, just a single value
            ParameterValue pv = new ParameterValue();
            pv.setName(entry.getKey());
            pv.setValue(entry.getValue());
            parmValues.add(pv);
        }
    }