我想知道如果我可以在asp.net頁面中設置值,而不是從頁面後面的代碼中設置值。 像我身後這樣的代碼從asp.net頁面設置ReportParameter值
this.ReportViewer1.LocalReport.SetParameters(
new ReportParameter("Year", Request.QueryString["Year"])
);
我怎麼可以把它移到aspx頁面。
我想知道如果我可以在asp.net頁面中設置值,而不是從頁面後面的代碼中設置值。 像我身後這樣的代碼從asp.net頁面設置ReportParameter值
this.ReportViewer1.LocalReport.SetParameters(
new ReportParameter("Year", Request.QueryString["Year"])
);
我怎麼可以把它移到aspx頁面。
好的,所以當我最初閱讀你的問題時,我明白它意味着你希望參數能夠設置在與報告相同的頁面上。我第二次訪問這個時,我明白它意味着你只想通過用戶輸入設置參數。
我不知道這是你想要的但在這裏不用我的回答:
通過用戶輸入參數值(另一頁):
我的頁面(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>
On Form-Submit:在表單提交上,我將這些參數及其值作爲列表提交給服務器。
報告負載:
私人無效的Page_Load(對象發件人,發送System.EventArgs){ // 從會話獲取報表視圖模型 //注:SelectedReport是我創建的用戶存儲類我需要報告的信息。 //即其定義,名稱/ desc,數據集信息,參數等。 NMBS.Models.SelectedReport Report = Manager.GetValue(ContextID)as NMBS.Models.SelectedReport;
// Load Report Parameters.
// Report.ReportParameters is simply of type List<ReportParameter> See the class below.
ReportViewer.LocalReport.SetParameters(Report.ReportParameters);
}
ReportParameter類別: 公共類ReportParameter { 公共的Int32 ID {得到;組; } 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中所做的。我知道你正在使用webforms,但在那裏做這個不應該是一個巨大的改變。我希望這有幫助。
我不知道這是多麼有幫助,但在MVC中,我只是做了一個頁面提交參數到服務器,然後將這些變量傳遞給pageload初始化(就像你有的代碼)。理論上你可以使用textfield和Ajax來做類似的事情。我現在正在使用我的電話,如果我記得,我會試着正式回答一個例子,當我到達電腦時。 – Shelby115 2014-10-27 21:02:13
你想在ASP.net MVC或只是ASP.net? – Sam 2014-10-27 23:30:59
謝謝大家。我正在使用網絡表單。 – 2014-10-28 02:57:04