我已开始使用crystal reports
创建报告。除了dataset
之外,我可以使用sql
和auto-row numbering
来展示所有内容。
这是我的代码:
SqlConnection cnn;
string connectionString = null;
string sql = null;
connectionString = "data source=Kim; initial catalog=DBO;user id=sa; password=passw0rd";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select Name as DataColumn1, Age as DataColumn2, from tbl1";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
cnn.Close();
DataSet2 ds = new DataSet2();
dscmd.Fill(ds, "DataTable2");
CrystalReport1 objRpt = new CrystalReport1 ();
objRpt.SetDataSource(ds.Tables[0]);
CrystalReportViewer1.ReportSource = objRpt;
CrystalReportViewer1.RefreshReport();
报告的结果是这样的:
No Name Age
Kim 22
Ian 29
Aris 27
需要显示这样的报告:
No Name Age
1 Kim 22
2 Ian 29
3 Aris 27
您能否告诉我如何添加行号。
答案 0 :(得分:3)
In'重置'选择'从不'
单击“确定” 将该字段添加到报告中。
答案 1 :(得分:1)
创建'RecordNumber'
特殊字段将是实现它的最简单方便的方法。记录编号字段用于为报告的“详细信息”部分中打印的每个记录编号。
答案 2 :(得分:0)
水晶报告中的自动顺序编号
答案 3 :(得分:-1)
使用datatable并获取DS.tables [0] .rows.count并在内部计数,并在每次循环迭代时递增。
DataTable tab_lvl = new DataTable();
tab_lvl.Columns.Add(new DataColumn("NO", typeof(string)));
tab_lvl.Columns.Add(new DataColumn("Name", typeof(string)));
tab_lvl.Columns.Add(new DataColumn("AGE", typeof(string)));
tab_lvl.Columns.Add(newDataColumn("Allot_Asset_Code",typeof(string)));
int count;
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
count++;
DataRow dr = tab_lvl.NewRow();
dr["NO"] = count;
dr["NAME"] = ds.Tables[0].Rows[i]["COLname/number"];
dr["AGE"] = ds.Tables[0].Rows[i]["COLname/number"];
}
//bind the datatable to the report
objRpt.SetDataSource(tab_lvl);
答案 4 :(得分:-1)
在crystal report中,可以选择添加自动增量字段,无需从数据库中获取rownumber
答案 5 :(得分:-1)
您可以将选择查询更改为
select ROW_NUMBER() OVER(ORDER BY Age) as No, Name, Age from tbl1
将产生预期的结果。