年紀大了,每過一段時間總是不記得 RDLC 的設定方法,總是出現,處理報表時發生錯誤,無法建立資料集 'Dataset' 的資料讀取器 的問題. 現在要好好記錄一下.
1. 報表 內 資料集 名稱, 例如: (資料來源是: dsClientMaster) (可用資料集是: ClientMaster) 則 名稱改為: dsClientMaster_ClientMaster ......不要問我點解..........
2. XXX.aspx 內 必需加入 ScriptManager , SqlDataSource, ReportViewer 內ReportDataSource 的 DataSourcId ,及 Name 都要入正確資料.
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TMSConnectionString %>" >
</asp:SqlDataSource>
<rsweb:reportviewer runat="server" ID="ReportViewer1" >
<localreport reportpath="Report1.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="SqlDataSource1"
Name="dsClientMaster_ClientMaster" />
</DataSources>
</localreport>
</rsweb:reportviewer>
</div>
</form>
如果報表內有2個或以上DataSet ,則加回有的DataSource 及 ReportDataSource.
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:TMSConnectionString %>" >
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:TMSConnectionString %>" >
</asp:SqlDataSource>
<rsweb:reportviewer runat="server" ID="ReportViewer1" >
<localreport reportpath="Report1.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="SqlDataSource1"
Name="dsClientMaster_ClientMaster" />
<rsweb:ReportDataSource DataSourceId="SqlDataSource2"
Name="dsUserMaster_UserMaster" />
</DataSources>
</localreport>
</rsweb:reportviewer>
</div>
</form>
3. 在 xxx.aspx.cs 內, 加入 SqlDataSource1.SelectCommand
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlDataSource1.SelectCommand = "Select * FROM ClientMaster";
this.ReportViewer1.LocalReport.Refresh();
}
}