Report Viewer Control - Send parameter to stored procedure in DataSet

二次信任 提交于 2019-12-11 23:36:25

问题


I have created a local .rdlc report within my ASP.NET web form application.

I want to load a report using the ReportViewer Control. I am getting the data for my Report DataSet using a stored procedure in the database. The stored procedure needs a parameter to return a single data row from the table. I want to be able to pass this parameter to the stored procedure programmatically so that the report will load the data.

How do I accomplish this?


回答1:


Your reportViewer on ASPX

<rsweb:ReportViewer ID="ReportViewer1" runat="server" SizeToReportContent="True">
</rsweb:ReportViewer>

Method to get data set

private DataTable GetSPResult()
{
    DataTable ResultsTable = new DataTable();

    SqlConnection conn = new SqlConnection(ConfigurationManager
      .ConnectionStrings["connectionString"].ConnectionString);

    try
    {
        SqlCommand cmd = new SqlCommand("yourStorePorcedure", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@id", 1);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(ResultsTable);
    }

    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
    finally
    {
        if (conn != null)
        {
            conn.Close();
        }
    }

    return ResultsTable;
}

Bind result to reportviewer

DataTable dt = GetSPResult();
ReportViewer1.Visible = true;
ReportViewer1.LocalReport.ReportPath = "Report1.rdlc";
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));



回答2:


 DataTable dtval = new DataTable();

//Add parameter

 SqlParameter[] param = new SqlParameter[5];
 if (!String.IsNullOrEmpty(ddlcust.SelectedValue))
 { param[0] = new SqlParameter("@custnam", ddlcust.SelectedValue); }
 else { param[0] = new SqlParameter("@custnam", DBNull.Value); }
 if (!string.IsNullOrEmpty(ddlproj.SelectedValue))
 { param[1] = new SqlParameter("@projid", Convert.ToInt32(ddlproj.SelectedValue)); }
 else { param[1] = new SqlParameter("@projid", DBNull.Value); }
 if (!string.IsNullOrEmpty(ddlvisittype.SelectedItem.Text))
 { param[2] = new SqlParameter("@vtype", ddlvisittype.SelectedItem.Text); }
 else { param[2] = new SqlParameter("@vtype", DBNull.Value); }
 param[3] = new SqlParameter("@frmdt", txtfrmdate.Text);
 param[4] = new SqlParameter("@todt", txttodate.Text);
 //Call storedprocedure with parameter
 dtval = objDal.Getvalue("[Usp_CRMRpt]", param);
 if (dtval != null && dtval.Rows.Count > 0)
 {

//Load to reportviewer

 RptCrm.Visible = true;
 RptCrm.LocalReport.DataSources.Clear();
 ReportDataSource rds = new ReportDataSource("dsCrmrpt", dtval);
 RptCrm.LocalReport.ReportPath = "Report1.rdlc";
 RptCrm.LocalReport.DataSources.Add(rds);
 RptCrm.DataBind();
 RptCrm.LocalReport.Refresh();
 }
 else
 { RptCrm.Visible = false; }


来源:https://stackoverflow.com/questions/18794360/report-viewer-control-send-parameter-to-stored-procedure-in-dataset

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!