Динамическое связывание набора данных с отчетами RDLC - PullRequest
5 голосов
/ 11 января 2011

Я хотел бы привязать динамически набор данных к rdlc.Я могу просмотреть отчет, если использую встроенный источник данных в файле ASPX (статическое связывание).Однако, если я использую следующие коды, средство просмотра отчетов продолжает отображать изображение «Загрузка ..».

Я уже проверил имя набора данных, и если я изменил имя набора данных на «Orders2», он показывает, чтоТребуемый набор данных "Заказы" не предоставляется.Итак, я добавляю GridView в форму и проверяю мой DataSet.Набор данных содержит данные и хорошо отображается с помощью GridView.

Проблема только в отчете, и я не смог динамически привязать данные к ReportViewer.Пожалуйста, помогите мне.Спасибо.

protected void Page_Load(object sender, EventArgs e)
{
    DataSet ds = GetDataSet();
    ReportDataSource rds = new ReportDataSource("Orders", ds.Tables[0]);
    ReportViewer1.LocalReport.DataSources.Clear();
    ReportViewer1.LocalReport.DataSources.Add(rds);
    ReportViewer1.LocalReport.Refresh();

    GridView1.DataSource = ds;
    GridView1.DataBind();
}

private DataSet GetDataSet()
{
    var conString = ConfigurationManager.ConnectionStrings["dotnetConnectionString"];
    string strConnString = conString.ConnectionString;

    SqlConnection conn = new SqlConnection(strConnString);
    conn.Open();
    string sql = "Select * FROM Orders";

    SqlDataAdapter ad = new SqlDataAdapter(sql, conn);
    DataSet ds = new DataSet();        
    ad.Fill(ds);

    return ds;
}

Коды ASPX указаны ниже:

<form id="form1" runat="server">
<div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="600px" Width="800px">
        <LocalReport ReportPath="Reports\Report.rdlc">
            <DataSources>
                <rsweb:ReportDataSource />
            </DataSources>
        </LocalReport>
    </rsweb:ReportViewer>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
</div>
</form>

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011

Я уже решил свою проблему.

Проблема в том, что вам нужно добавить свои коды в упаковке IsPostBack.

if (!Page.IsPostBack)
{
//your binding codes here
}
1 голос
/ 05 февраля 2011

В событие Pade_load добавьте этот код

ReportViewer1.LocalReport.ReportPath = Server.MapPath("\\Reports\\Report.rdlc");
this.ReportViewer1.Width = 800;
this.ReportViewer1.Height = 600;
...