无法在报表查看器中切换报表

时间:2012-03-02 04:45:54

标签: c# asp.net report

我在我的aspx上定义了这样的报表视图。

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div style="margin-left:auto;margin-right:auto;width:100%">
        <%--<asp:ScriptManager ID="ScriptManager1" runat="server">--%>
            <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="1024px" 
                Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
                WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" 
            Height="768px">
                <LocalReport ReportPath="Reports\Gestion.rdlc">
                    <DataSources>
                        <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="Prueba" />
                    </DataSources>
                </LocalReport>
            </rsweb:ReportViewer>
            <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" 
            SelectMethod="obtenerGestionesPorTipificacion" 
            TypeName="SodexoSAT.Reports.DataSets.GestionesDataSet">
                <SelectParameters>
                    <asp:Parameter Name="gestion" Type="String" />
                </SelectParameters>
        </asp:ObjectDataSource>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            SelectMethod="obtenerTodasGestiones" 
            TypeName="SodexoSAT.Reports.DataSets.GestionesDataSet">
        </asp:ObjectDataSource>
<%--            </asp:ScriptManager>--%>
    </div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
    style="margin-top: 47px" Text="Button" />
</form>

所以,当我点击按钮时,我可以像这样更改报告

 ReportViewer1.Reset();
        ReportViewer1.LocalReport.ReportPath = @"Reports\GestionPorTipificacion.rdlc";
        ReportDataSource rds = new ReportDataSource();
        rds.DataSourceId = "ObjectDataSource2";
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(rds);
        ReportViewer1.LocalReport.Refresh();

它会抛出此错误

A data source instance has not been supplied for the data source 'GestionesPorTipificacion'.

我做错了什么因为我在事件中更改了数据源。我需要设置更多参数吗?

1 个答案:

答案 0 :(得分:1)

    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="1024px" 
            Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
            WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" 
        Height="768px">
            <LocalReport ReportPath="Reports\Gestion.rdlc">
                <DataSources>
                    <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="Prueba" />
                </DataSources>
            </LocalReport>
        </rsweb:ReportViewer>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        SelectMethod="obtenerTodasGestiones" 
        TypeName="SodexoSAT.Reports.DataSets.GestionesDataSet">
    </asp:ObjectDataSource>
    <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" 
        SelectMethod="obtenerGestionesPorTipificacion" 
        TypeName="SodexoSAT.Reports.DataSets.GestionesDataSet">
            <SelectParameters>
                <asp:Parameter Name="gestion" Type="String" />
            </SelectParameters>
    </asp:ObjectDataSource>

按钮点击事件应

    ReportViewer1.Reset();
    ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ur_2ndDatasetName", "ObjectDataSource2"));
    ReportViewer1.LocalReport.ReportPath = @"Reports\GestionPorTipificacion.rdlc";
    ReportViewer1.LocalReport.Refresh();