【问题标题】:How to add row numbering in crystal report C#如何在水晶报表C#中添加行号
【发布时间】:2013-08-30 05:09:21
【问题描述】:

我已开始使用crystal reports 创建报告。我可以使用datasetsql 显示所有内容,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

你能告诉我如何添加行号吗?

【问题讨论】:

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


    【解决方案1】:
    1. 创建一个新的“运行总字段”
    2. 为字段命名,例如“RowNo”
    3. 选择要汇总的字段
    4. 将“摘要类型”设置为“不同计数”
    5. 在“评估”中选择“针对每条记录”
    6. 在“重置”中选择“从不”

      点击确定 将字段添加到报告中。

    【讨论】:

      【解决方案2】:

      在水晶报表中,它们是添加自动增量字段的选项,无需从数据库中获取行号

      【讨论】:

      • 感谢您的想法 Sumeshk,我检查了 Crystal Report 功能并在行上添加了记录号。现在是自动递增。谢谢。
      • 但是 Sumeshk 怎么样?
      【解决方案3】:

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

      【讨论】:

      • 这就是我所做的 Srinivas。 Sumeshk 给了我一个想法。谢谢。
      • 但是我该怎么做呢?
      【解决方案4】:

      水晶报表中的自动序号

      1. 打开水晶报表
      2. Field Explorer,右击“Running Total Fieids”——新建

      3. 配置。

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

        3.2 点击选择自定义字段值

        3.3 选择“汇总类型”进行设置(“汇总类型”为“不同计数”)

        3.4 设置“Evaluate”(设置'for each record')

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

        3.6 单击确定。

      4. 然后添加要报告的字段

      【讨论】:

        【解决方案5】:

        您可以将选择查询更改为

        select ROW_NUMBER() OVER(ORDER BY Age) as No, Name, Age from tbl1
        

        这将产生预期的结果。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 谢谢 Ankur,我会记下这个想法。
          猜你喜欢
          • 2011-04-05
          • 2021-02-24
          • 1970-01-01
          • 2017-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多