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();
}
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();
}