1

Web サイトに追加された Telerik レポート プロジェクトがあり、それにパラメーターを渡そうとしていますが、次のエラーが表示されます。

エラー:

オブジェクト参照がオブジェクト インスタンスに設定されていません。

Asp.net コード

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
    {
        MembershipCard rpt = new MembershipCard();
        // Error occuring here
        rpt.ReportParameters["@MemberID"].Value = "5"; // Request["MemberID"];
        ReportViewer1.Report = rpt;
    }        
}

Telerik レポート クラス

    public MembershipCard()
    {
        /// <summary>
        /// Required for telerik Reporting designer support
        /// </summary>
        InitializeComponent();
        this.DataSource = null;
    }

    private void MembershipCard_NeedDataSource(object sender, EventArgs e)
    {
        string proc = "rpt_MembershipCard" + this.ReportParameters["@MemberID"].Value.ToString();
        SqlDataAdapter adapter = new SqlDataAdapter(proc, "Data Source=(local); Initial Catalog= northwind; intergrated security = True");
        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet);
        (sender as Telerik.Reporting.Processing.Report).DataSource = dataSet;
    }

インターネット上で関連するものを見つけることができなかったので、誰かが私を正しい方向に向けてください。

4

1 に答える 1

1

問題は、パラメータを提供していないことです。変更してみてください:

rpt.ReportParameters.Add("MemberID", "5");

と:

string proc = this.ReportParameters["MemberID"].Value.ToString();

DataSet.xsdまた、ソリューションにファイルを追加した場合は、その生成されTableAdapterた .

ストアド プロシージャの例:

using System.Data;
using YourNamespace.StoredProcedureNameTableAdapter;

//Keep in mind StoredProcedureName is taken from SP name in your database
//when you add DataSet.xsd to your solution by default if you don't change anything

private void ClassName_NeedDataSource(object sender, EventArgs e)
{
   int someID = int.Parse(this.ReportParameters["ParameterID"].Value.ToString());
   StoredProcedureNameTableAdapter adapter = new StoredProcedureNameTableAdapter();
   DataSetFile.StoredProcedureNameDataTable data = adapter.GetData(someID); //DataSetFile is DataSetFile.xsd and GetData is method name you defined on DataSetFile.xsd creation
   ((Telerik.Reporting.Processing.Report)sender).DataSource = data.AsDataView();
}
于 2012-11-20T13:40:52.473 に答える