2014-10-27 50 views
0

我想知道如果我可以在asp.net頁面中設置值,而不是從頁面後面的代碼中設置值。 像我身後這樣的代碼從asp.net頁面設置ReportParameter值

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

我怎麼可以把它移到aspx頁面。

+0

我不知道這是多麼有幫助,但在MVC中,我只是做了一個頁面提交參數到服務器,然後將這些變量傳遞給pageload初始化(就像你有的代碼)。理論上你可以使用textfield和Ajax來做類似的事情。我現在正在使用我的電話,如果我記得,我會試着正式回答一個例子,當我到達電腦時。 – Shelby115 2014-10-27 21:02:13

+0

你想在ASP.net MVC或只是ASP.net? – Sam 2014-10-27 23:30:59

+0

謝謝大家。我正在使用網絡表單。 – 2014-10-28 02:57:04

回答

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> 

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,但在那裏做這個不應該是一個巨大的改變。我希望這有幫助。