从asp.net页面设置ReportParameter值

时间:2014-10-27 20:23:10

标签: asp.net reportviewer rdlc

我想知道我是否可以在asp.net页面中设置值,而不是从页面后面的代码中设置。 就像我有这样的代码

this.ReportViewer1.LocalReport.SetParameters(
                new ReportParameter("Year", Request.QueryString["Year"])
                );

如何将其移至aspx页面。

1 个答案:

答案 0 :(得分:0)

好吧,所以当我最初阅读您的问题时,我理解这意味着您希望参数能够与报告设置在同一页面上。我第二次访问它时,我理解这意味着你只想通过用户输入来设置参数。

我不确定你想要的是哪一个,但我的回答是:

通过用户输入的参数值(在另一页上):

我的页面(Parameters.cshtml)

<table>
    <tbody>
        @for (Int32 I = 0; I < Report.Parameters.Count; I++)
        {
            <tr>
                <td>@Html.TextBox("[" + I + "].PromptString", Report.Parameters[I].PromptString, new { @type = "text", @readonly = "readonly", @tabindex = "-1", @style = "text-align: right; border: 0px ridge black; color: black;" })</td>
                <td>
                    @Html.Hidden("[" + I + "].ID", Report.Parameters[I].ID, new { @type = "hidden" })
                    @Html.Hidden("[" + I + "].QueryParameter", Report.Parameters[I].QueryParameter, new { @type = "hidden" })
                    @Html.Hidden("[" + I + "].DataType", Report.Parameters[I].DataType, new { @type = "hidden" })
                    @Html.Hidden("[" + I + "].DataSet.ID", Report.Parameters[I].DataSet.ID, new { @type = "hidden" })
                    @Html.Hidden("[" + I + "].IsDisplayParameter", Report.Parameters[I].IsDisplayParameter, new { @type = "hidden" })
                    @Html.CheckBox("[" + I + "].Nullable", Report.Parameters[I].Nullable, new { @class = "hidden" })
                    @Html.TextBox("[" + I + "].Value", "", new { @type = Report.Parameters[I].GetInputType() })
                </td>
            </tr>
        }
    </tbody>
</table>

我的网页(在网站上查看时):

<table>
    <tbody>
            <tr>
                <td><input name="[0].PromptString" readonly="readonly" style="text-align: right; border: 0px ridge black; color: black;" tabindex="-1" type="text" value="Username: "></td>
                <td>
                    <input name="[0].ID" type="hidden" value="44">
                    <input name="[0].QueryParameter" type="hidden" value="@Username">
                    <input name="[0].DataType" type="hidden" value="System.String">
                    <input name="[0].DataSet.ID" type="hidden" value="12">
                    <input name="[0].IsDisplayParameter" type="hidden" value="False">
                    <input class="hidden" name="[0].Nullable" type="checkbox" value="true"><input name="[0].Nullable" type="hidden" value="false">
                    <input name="[0].Value" type="text" value="">
                </td>
            </tr>
            <tr>
                <td><input name="[1].PromptString" readonly="readonly" style="text-align: right; border: 0px ridge black; color: black;" tabindex="-1" type="text" value="Hide Inactive reports: "></td>
                <td>
                    <input name="[1].ID" type="hidden" value="45">
                    <input name="[1].QueryParameter" type="hidden" value="@HideInactive">
                    <input name="[1].DataType" type="hidden" value="System.Boolean">
                    <input name="[1].DataSet.ID" type="hidden" value="12">
                    <input name="[1].IsDisplayParameter" type="hidden" value="True">
                    <input class="hidden" name="[1].Nullable" type="checkbox" value="true"><input name="[1].Nullable" type="hidden" value="false">
                    <input name="[1].Value" type="checkbox" value="">
                </td>
            </tr>
    </tbody>
</table>

在表单提交:在表单提交时,我将这些参数及其值作为列表提交给服务器。

报告负载

private void Page_Load(object sender,System.EventArgs e) {     //从Session获取报告ViewModel     //注意:SelectedReport是我创建的一个类,用于存储报表所需的信息。     //即它的定义,名称/描述,数据集信息,参数等     NMBS.Models.SelectedReport Report = Manager.GetValue(ContextID)为NMBS.Models.SelectedReport;

// Load Report Parameters.
// Report.ReportParameters is simply of type List<ReportParameter> See the class below.
ReportViewer.LocalReport.SetParameters(Report.ReportParameters);

}

报告参数类: 公共类ReportParameter {     public Int32 ID {get;组; }     public String PromptString {get;组; }     public String DataType {get;组; }     public Int32 Priority {get;组; }     public String QueryParameter {get;组; }     public Boolean IsDisplayParameter {get;组; }     public DataSet DataSet {get;组; }     public Boolean Nullable {get;组; }     public String Value {get;组; } }

这就是我在MVC中的表现。我知道你正在使用网络表格,但在那里做这件事不应该是一个巨大的变化。我希望这会有所帮助。