如何在Crystal Report C#中添加行号

6

我已经开始使用Crystal Reports创建报告。我能够使用dataset和sql显示所有内容,除了自动行编号。

这是我的代码:

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个回答

6
  1. 创建一个新的'累计字段'
  2. 为该字段命名,例如 '行号'
  3. 选择要汇总的字段
  4. 将 '汇总类型' 设置为 '去重计数'
  5. 在 '评估' 中选择 '对于每个记录'
  6. 在 '重置' 中选择 '从不'

    点击确定

  7. 将该字段添加到报表中。 enter image description here

2
创建一个'RecordNumber' 特殊字段是最简单和容易的方法。记录编号字段用于对报告详细部分中打印的每个记录进行编号。

这是我做的,Srinivas。Sumeshk给了我一个想法。谢谢。 - Kim martin Rocero
但是我该怎么做呢? - Kobbe

1
在Crystal Report中有添加自动递增字段的选项,无需从数据库获取行号。

1
感谢Sumeshk提供的想法,我查看了Crystal Report功能并在行上添加了记录编号。现在它是自动递增的。谢谢。 - Kim martin Rocero
但是,Sumeshk怎么做呢? - Kobbe

1

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

  1. 打开水晶报表
  2. 字段资源管理器,右键单击“运行总计字段” - 新建

  3. 配置。

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

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

    3.3 选择要设置的“汇总类型”(将“汇总类型”设置为“不同计数”)

    3.4 设置“评估”(设置为“对于每个记录”)

    3.5 设置“重置”(设置为“从不”)

    3.6 单击确定。

  4. 然后将该字段添加到报表中

    enter image description here


0
使用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);

1
谢谢Ankur,我会记下这个想法。 - Kim martin Rocero
这是最简单的方法! - M. Jahedbozorgan

0
你可以将选择查询更改为
select ROW_NUMBER() OVER(ORDER BY Age) as No, Name, Age from tbl1

这将产生预期的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接