0

何日もかけて取り組んできた問題の解決にかなり近づいています。

ASP.net ページの SSRS レポートにパラメーターを渡そうとしています。ユーザーは前のページで、プログラム (3 つのプログラムのドロップダウン リスト) と期間 (日付) の 2 つのオプションを選択します。

何かを渡すことはできますが、欲しいものは得られません。ユーザーがレポートに何を表示するかを選択するページは次のとおりです。

        ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Bill Created!');window.open('../demographics/supbillrpt.aspx?prog=fprogram&period=cperiod','_self');", true);

fprogram は次のとおりです。

        SqlParameter param2 = new SqlParameter();
        param2 = command.Parameters.Add("@program", SqlDbType.Char);
        param2.Value = fprogram;

cperiod も同じですが、日付です。

レポートを表示するページのコード ビハインドは次のとおりです。

        String sprogram = Request.QueryString[0];
        String speriod = Request.QueryString[1];

        ReportViewer1.ProcessingMode = ProcessingMode.Remote;
        ReportViewer1.Width = 800;
        ReportViewer1.Height = 600;
        IReportServerCredentials irsc = new CustomReportCredentials();
        ReportViewer1.ServerReport.ReportServerCredentials = irsc;
        ReportViewer1.ServerReport.ReportPath = "/sup_billing/Report1";
        ReportViewer1.ServerReport.Refresh();
        ReportParameter p = new ReportParameter("prog", sprogram);                      ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p });
        ReportParameter p2 = new ReportParameter("period", speriod); ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p2 });

そして、私が得たのは、プログラムが空白で、ピリオドが「cperiod」と表示されていることです

変数として読み取れるようにするためにいくつかの異なることを試みましたが、何も機能していないようです。

以下を入れた場合:

ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Bill Created!');window.open('../demographics/supbillrpt.aspx?prog=VEX.period=cperiod','_self'); "、 真実);

VEX はそのドロップダウン リストの項目で、そのように配置したので表示されます。しかし、ユーザーが常に VEX を選択するとは限らないため、fprogram 変数を使用する必要があります。助言がありますか?

4

1 に答える 1

0

最初のコード フラグメントは、コードの一般的な形式のモックアップではなく、使用している実際のコードであると想定しています。fprogramさらに、と呼ばれる変数があると仮定していますcperiod

渡したい正確な値を反映するようにクエリ文字列を作成する必要があります。残念ながら、値のソースとして使用する変数の名前をコーディングして、実際の値を挿入することはできません。

したがって、コードは次のようになります。

// I am assuming you're getting your fprogram and cperiod values from controls.  The 
// control names are of course up to you.

string fprogram = ddlProgram.SelectedValue;
string cperiod =  txtPeriod.Text;  // I'm assuming this contains a formatted date.

string queryString = String.Format(
     "../demographics/supbillrpt.aspx?prog={0}&period={1}", 
     fprogram, 
     cperiod);
string script = String.Format(
     "alert('Bill Created!');window.open('{0}','_self');",
     queryString);

ClientScript.RegisterStartupScript(this.GetType(), "Alert", script, true);

お役に立てれば。

于 2013-02-04T18:28:19.323 に答える