實現:
1.建立需要的Web項目ReportDemo
2.建立類庫,提供資料來源List,產生解決方案
(1).添加類UserInfo.cs
public class UserInfo
{
public string Id { set; get; }
public string Name { set; get; }
public string Age { set; get; }
}
(2).提供資料UserOper.cs
public class UserOper
{
public List<UserInfo> GetList()
{
List<UserInfo> lstUserInfo = new List<UserInfo>();
UserInfo user = new UserInfo();
user.Id = "3001";
user.Name = "劉若英";
user.Age = "20";
lstUserInfo.Add(user);
user = new UserInfo();
user.Id = "3002";
user.Name = "劉德華";
user.Age = "24";
lstUserInfo.Add(user);
user = new UserInfo();
user.Id = "3003";
user.Name = "劉小喜";
user.Age = "28";
lstUserInfo.Add(user);
return lstUserInfo;
}
public DataTable GetDataTable()
{
DataTable dTable = new DataTable();
dTable.Columns.Add("編號");
dTable.Columns.Add("姓名");
dTable.Columns.Add("性別");
dTable.Columns.Add("年齡");
DataRow dRow = null;
dRow = dTable.NewRow();
dRow["編號"] = "1001";
dRow["姓名"] = "張三";
dRow["性別"] = "女";
dRow["年齡"] = "23";
dTable.Rows.Add(dRow);
dRow = dTable.NewRow();
dRow["編號"] = "1002";
dRow["姓名"] = "李四";
dRow["性別"] = "男";
dRow["年齡"] = "25";
dTable.Rows.Add(dRow);
dRow = dTable.NewRow();
dRow["編號"] = "1003";
dRow["姓名"] = "王二";
dRow["性別"] = "男";
dRow["年齡"] = "28";
dTable.Rows.Add(dRow);
return dTable;
}
}
3.Web項目中添加報表ReportUser.rdlc,
報表資料-> 建立->資料集(直接選擇建立的類庫) ->
命名資料集名稱: dsUser1/ dsUser2-> 可用資料集選擇要綁定的集合
(此樣本示範報表可綁定List泛型集合和DataTable資料) -> 完成
4.報表工具箱,選擇要顯示的報表專案拖到頁面
->若要綁定資料直接拖報表資料中繫結資料欄位就可
5.web頁面編寫綁定代碼
.aspx:
<rsweb:ReportViewer ID="rvList" runat="server" Width="100%" Height="100%">
</rsweb:ReportViewer>
.cs :
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack) {
initialize();
}
}
private void initialize()
{
UserOper userOper = new UserOper();
rvList.LocalReport.DataSources.Clear();
rvList.LocalReport.ReportPath = @"ReportUser.rdlc";
//DataSet1與建立報表的資料來源一致,報表資料來源對象的類型必須為
//System.Data.DataTable、System.Collections.IEnumerable
//或 System.Web.UI.IDataSource。
ReportDataSource rdt1 = new ReportDataSource("dsUser1", userOper.GetList());
ReportDataSource rdt2 = new ReportDataSource("dsUser2", userOper.GetDataTable());
rvList.LocalReport.DataSources.Add(rdt1);
rvList.LocalReport.DataSources.Add(rdt2);
rvList.DataBind();
}