我想知道我是否可以在asp.net页面中设置值,而不是从页面后面的代码中设置。 就像我有这样的代码
this.ReportViewer1.LocalReport.SetParameters(
new ReportParameter("Year", Request.QueryString["Year"])
);
如何将其移至aspx页面。
答案 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中的表现。我知道你正在使用网络表格,但在那里做这件事不应该是一个巨大的变化。我希望这会有所帮助。