RDLC数据未更改

本文关键字:数据 RDLC | 更新日期: 2023-09-27 18:26:59

我使用rdlc根据参数动态显示报告。第一次加载时一切都很好。但在我更改参数后,即使数据表值发生了更改,也要再次加载。rdlc显示以前的结果。这里缺少什么

  private void btnsearch_Click(object sender, EventArgs e)
        {
            reportLoad();
        }
        private void reportLoad()
        {
            var fromdate=txtfromdate.Text;
            var todate=txttodate.Text;
            var accontHead=ComboaccHead.SelectedValue;
            var drawbankid=combodraw.SelectedValue;
            var noabankid=combonoa.SelectedValue;
            var type=ComboType.SelectedIndex;
            spParamCollection.Clear();
            spParamCollection.Add(new SPParams { Name = "@fromdate", Value =Convert.ToDateTime(fromdate).ToString("yyyy-MM-dd") });
            spParamCollection.Add(new SPParams { Name = "@toDate", Value = Convert.ToDateTime(todate).ToString("yyyy-MM-dd") });
            spParamCollection.Add(new SPParams { Name = "@AccountHead", Value = Convert.ToInt32(accontHead) });
            spParamCollection.Add(new SPParams { Name = "@drawbankid", Value = Convert.ToInt32(drawbankid) });
            spParamCollection.Add(new SPParams { Name = "@noabankid", Value = Convert.ToDecimal(noabankid) });
            spParamCollection.Add(new SPParams { Name = "@type", Value = Convert.ToDecimal(type) });
            DataTable dt = db.getDataUsingSP("CashBookReport", spParamCollection);
            reportViewer1.Clear();
            ReportDataSource rds = new ReportDataSource();
          //  reportViewer1.LocalReport.Refresh();
            reportViewer1.Visible = true;
            rds.Value = dt;
            rds.Name = "KWADataSet";
            reportViewer1.LocalReport.DataSources.Add(rds);
           this.reportViewer1.RefreshReport();


        }

RDLC数据未更改

btnsearch_Click在Page_Load之后被触发,因此更改不会生效。

您需要将报表查看器reportViewer1放置在更新面板中,然后在reportLoad()结束时更新它

注意:我只是添加了=Globals!ExecutionTime表达式添加到.rdlc中的文本框中以测试刷新

为了简洁起见,我省略了这些参数。

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
    <div>
    <asp:UpdatePanel ID="updatepanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
        <rsweb:ReportViewer ID="reportViewer1" runat="server" Font-Names="Verdana" 
            Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
            WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
            <LocalReport ReportPath="Report1.rdlc">
            </LocalReport>
        </rsweb:ReportViewer>
        <asp:Button runat="server" ID="btnSearch" Text="Search" onclick="btnSearch_Click" />
        </ContentTemplate>
    </asp:UpdatePanel>
    </div>
    </form>

然后在你的代码后面:

protected void btnSearch_Click(object sender, EventArgs e)
{
    reportLoad();
}
private void reportLoad()
{
    reportViewer1.LocalReport.DataSources.Clear();
    // your datasource assignment here
    reportViewer1.LocalReport.Refresh();
    updatepanel1.Update();
}