如何在水晶报表C#中添加行编号

时间:2013-08-30 05:09:21

标签: c# asp.net visual-studio-2010 crystal-reports

我已开始使用crystal reports创建报告。除了dataset之外,我可以使用sqlauto-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

您能否告诉我如何添加行号。

6 个答案:

答案 0 :(得分:3)

  1. 创建新的'正在运行的总字段'
  2. 为字段Like' RowNo'
  3. 命名
  4. 选择要汇总的字段
  5. 设置'摘要类型'到了' distinct count'
  6. 评估'选择'对于每条记录'
  7. In'重置'选择'从不'

    单击“确定” 将该字段添加到报告中。 enter image description here

答案 1 :(得分:1)

创建'RecordNumber' 特殊字段将是实现它的最简单方便的方法。记录编号字段用于为报告的“详细信息”部分中打印的每个记录编号。

答案 2 :(得分:0)

水晶报告中的自动顺序编号

  1. 打开Crystal报告
  2. Field Explorer,右键单击"运行Total Fieids" - 新

  3. 配置。

    3.1选择要设置的字段(选择要汇总的字段)

    3.2单击以选择自定义字段值

    3.3选择"摘要类型"设置('摘要类型'到'不同的计数')

    3.4 Set" Evaluate" (为每条记录设置')

    3.5设置"重置"(设置'从不')

    3.6单击“确定”。

  4. 然后将字段添加到报告

    enter image description here

答案 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

将产生预期的结果。