環境
VS2013
步驟
1.新增webform 拉reportview & ScriptManager & txtID & Button
2.新增資料集 命名為myDS.xsd
右鍵 加入/DataTable 命名為cust
插入資料行ID/NAME/TEL/ADDR
3.新增報表rdlc 命名為rp.rdlc
I.新增dataset **如果沒有看到,可至檢視/報表資料,把它打開 (Ctrl + Alt + D)
命名為data / DataSource 選myDS / Available dataset 選cust
II.新增變數ID 勾選allow 空白
Add Param
III.由工具箱拉datatable到畫面上,再把報表資料/DataTable的 field拉到畫面上
4.編輯webform.cs 將reportview和rdlc串起來
protected void Button1_Click(object sender, EventArgs e)
{
ReportViewer rv = ReportViewer1;
DataTable dt = new DataTable();
dt = getDT();
rv.LocalReport.ReportEmbeddedResource = "namespace.Report.rp.rdlc";//namespace.document.reportname.rdlc
rv.LocalReport.SetParameters(new ReportParameter[] { new ReportParameter("ID", txtID.Text.Trim()) });
rv.LocalReport.DataSources.Clear();
//int cnt = dt.Rows.Count;
rv.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("data", dt));//第一個變數,就是報表資料集的名稱
rv.LocalReport.Refresh();
}
private DataTable getDT()
{
string sConnection = "data source = 127.0.0.1;initial catalog= DB; user id = sa ;password= sa ";
DataTable dt = new DataTable();
using (SqlConnection sqlConn = new SqlConnection( sConnection))
{
sqlConn.Open();
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = sqlConn;
sqlComm.CommandTimeout = 3000;
sqlComm.CommandText = @"
select *
from
(
select ID='1',NAME='廖添丁',TEL='05',ADDR='雲林縣'
union
select ID='2',NAME='黃俊雄',TEL='05',ADDR='雲林縣'
union
select ID='3',NAME='廖峻',TEL='05',ADDR='雲林縣'
union
select ID='4',NAME='蔡秋鳳',TEL='05',ADDR='雲林縣'
union
select ID='5',NAME='鄭豐喜',TEL='05',ADDR='雲林縣'
union
select ID='5',NAME='張信哲',TEL='05',ADDR='雲林縣'
) a
where (@ID='' or ID=@ID)
";
sqlComm.Parameters.Add("@ID", SqlDbType.VarChar).Value = txtID.Text.Trim();
SqlDataAdapter adapter = new SqlDataAdapter(sqlComm);
adapter.Fill(dt);
return dt;
}
5.呈現
選取 detail row ->右鍵 Add Group /Parent Group /Group by 選column xxx >>table就會多出column xxx
重新命名group name be gp_xxx
在xxx那個column的cell,按右鍵 Insert Row/Inside Group - Below >>table就會在detail下方,多出row
在那row 的cell fx 給 ="筆數:"+ RowNumber("gp_xxx").ToString()
如果不想要群組colun xxx的顯示,可以把它刪掉
新增群組小計 在群組CELL 按右鍵 Insert Row / Inside Group Below
="筆數:"+ RowNumber("gp_ADDR").ToString()
選取 detail row ->右鍵 Add Group /Parent Group /Group by 選column ADDR >>table就會多出column ADDR
重新命名group name be gp_ADDR
在[ADDR]那個column的cell,按右鍵 Add Group /Child Group /Group by 選column ID >>table就會多出column ID
在[ID]那個column的cell,按右鍵 Insert Row/Inside Group - Below >>table就會在下方,多出row
在那row 的cell fx 給 ="小小計:"+ RowNumber("gp_ID").ToString()
在[ADDR]那個column的cell,按右鍵 Insert Row/Inside Group - Below >>table就會在下方,多出row
在那row 的cell fx 給 ="小計:"+ RowNumber("gp_ADDR").ToString()
在[ADDR]那個column的cell,按右鍵 加入總計/ Below >>table就會在最後,多出row
在那row 的cell fx 給 ="總計:"+ RowNumber(nothing).ToString()
如果不想要群組colun ADDR的顯示,可以把它刪掉
如果不想要群組colun ID的顯示,可以把它刪掉
###bak
using Microsoft.Reporting.WebForms;//for report
ReportViewer rv = ReportViewer1;
DataTable dt = new DataTable();
dt = getDT();
rv.LocalReport.ReportEmbeddedResource = "ICRM.Report.rp.rdlc";
rv.LocalReport.SetParameters(new ReportParameter[] { new ReportParameter("ID", (txtID.Text.Trim()!='' ? txtID.Text.Trim() : "不限")) });
rv.LocalReport.DataSources.Clear();
//int cnt = dt.Rows.Count;
rv.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("data", dt));//第一個變數,就是報表資料集的名稱
rv.LocalReport.Refresh();
using Microsoft.Reporting.WebForms;//for report
ReportViewer rv = ReportViewer1;
DataSet myds = getDateSet(YMDs );//dataset for gridview
GridView1.DataSource = myds ;
GridView1.DataBind();
rv.LocalReport.ReportPath = @"Report\rp.rdlc";
rv.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local;
rv.LocalReport.DataSources.Clear();
//int cnt = myds.Tables[0].Rows.Count;
rv.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("data", myds.Tables[0]));
rv.LocalReport.Refresh();
起手式
建立datatable >加入資料表 >拉datatable field to table
順序
1.先拉出資料
2.再依群組分頁
3.再做沒資料,要顯示文字
怎麼傳入參數
1.在報表新增參數DATE1
2.程式碼
rv.LocalReport.SetParameters(new ReportParameter[] { new ReportParameter("ID", (txtID.Text.Trim()!='' ? txtID.Text.Trim() : "不限")) });
#Format #CINT #Cdate #AddYears #cstr #mid #left
fx運算式/欄位/點選值
fx運算式/參數/點選值 ID
因為它要activeX,要用IE才有
PageSize超過大小
檢查 PageSize A4 #width 29.7 #height 21
檢查 Margin #left 1cm #right 1cm
檢查報表框
群組 分頁 (小計/總計)
https://tpu.thinkpower.com.tw/tpu/File/html/201712/20171228102952_f.html?f=3dj6j8kd38895ksgtdddd93865jhr9sn3rqkh