想手动绑定reportviewer和sql查询

时间:2012-09-18 11:30:55

标签: c# datagrid reportviewer

我想将ReportViewer与我执行的查询绑定,就像我们使用DataGridView一样,因此表单将包含一个文本框和一个按钮。当我在文本框中输入学生ID并单击按钮时,它必须从表中获取特定记录,并以收据的形式在报告查看器中显示。我从未使用过ReportViewer,所以如果你能给我一些例子,或者只是写一个我认为可以管理的粗略蓝图,我就不知道如何以及从哪里开始。

谢谢

2 个答案:

答案 0 :(得分:1)

ReportViewer显示报告,而不是绑定数据。为了显示收据,您需要创建.rdl或.rdlc文件(哪一个取决于您是在WinForms还是WebForms中工作)。

您的报告定义将存储在.rdl或.rdlc文件中。您可以在.rdl文件中存储查询定义,并在显示报告时执行该定义。您可以在查询中设置参数并报告可以提示您的参数。

除此之外,具体细节因这是WinForms还是WebForms报告而异。

答案 1 :(得分:0)

但是我可以给你一个提示,Local Report尝试像这样绑定它,这个例子接受参数FromDateToDate并使用和EntiyDataSource相应地提取数据。

<强> page.aspx

 <rsweb:ReportViewer ID="ReportViewer1" runat="server"
 Height="600px" SizeToReportContent="True"
        Width="800px" Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)"
        WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
        <LocalReport ReportPath="Report.rdlc">
            <DataSources>
                <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
            </DataSources>
        </LocalReport>
    </rsweb:ReportViewer>
    <asp:EntityDataSource ID="EntityDataSource2" runat="server" 
        ConnectionString="name=FooEntities" DefaultContainerName="FooContainerEntities" 
        EnableFlattening="False" EntitySetName="Foo_table">
    </asp:EntityDataSource>
    <asp:EntityDataSource ID="EntityDataSource1" runat="server">
    </asp:EntityDataSource>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        SelectMethod="GetList" TypeName="model">
        <SelectParameters>
            <asp:Parameter DefaultValue="" Name="dateFrom" Type="DateTime"></asp:Parameter>
            <asp:Parameter DefaultValue="" Name="dateTo" Type="DateTime"></asp:Parameter>
        </SelectParameters>
    </asp:ObjectDataSource>

代码背后

protected void Button1_Click(object sender, EventArgs e)
{
    List<ListData> listData = new List<ListData>();
    DateTime dateFrom = Convert.ToDateTime(TextBox1.Text.Trim());
    DateTime dateTo = Convert.ToDateTime(TextBox2.Text.Trim());
    ReportViewer1.LocalReport.ReportPath = "Report.rdlc";
    ReportParameter[] reportParameter = new ReportParameter[2];
    reportParameter[0] = new ReportParameter("dateFrom", dateFrom.ToShortDateString());
    reportParameter[1] = new ReportParameter("dateTo", dateTo.ToShortDateString());
    ReportViewer1.LocalReport.SetParameters(reportParameter);
    ReportViewer1.LocalReport.Refresh();       

}