datatable 根据某一列数据来控制其他列合并

gridcontrol根据列合并后打印预览会有点问题,在翻页后偶尔会多显示一行。因为之前合并的方法是把这其余几行全部附加到第一行。被合并的那几行本来有内容没有删掉才导致这样。所以需要把这些内容删掉。各种问题太多,还是在绑定数据之前修改datatable好了。

   System.Data.DataTable dt = new System.Data.DataTable();
   string current3 = string.Empty;
   string current4 = string.Empty;
   int current5 = 0;
   int firstIndex = 0;                       //每次合并后的第一行行号
  for (int i = 0; i < dt.Rows.Count; i++) {
string biaoti3_1 = dt.Rows[i]["三级标题"].ToString();
                if ( biaoti3_1!= current3)           当开始有新的合并区域时
                {
                    //MessageBox.Show(currentbiaoti4);
                    if (i != 0) dt.Rows[firstIndex]["题目"] = dt.Rows[firstIndex]["三级标题"] + "\n" + current4;                                     //除去第一行异常情况
                     current4 = dt.Rows[i]["题目"].ToString();
                     if (i != 0) dt.Rows[firstIndex]["分值"] = current5;                    //除去第一行异常情况
                    current5 = Convert.ToInt32(dt.Rows[i]["分值"]);                    current3 = biaoti3_1; firstIndex = i;                }              else               {                       current4 = current4 + "\n" + dt.Rows[i]["题目"].ToString(); //三级标题这一列内容相同时逐行累加                       current5 += Convert.ToInt32(dt.Rows[i]["分值"]);                      dt.Rows[i]["题目"] = string.Empty; //保证只有合并的第一行有内容                       dt.Rows[i]["分值"] = string.Empty; //保证只有合并的第一行有内容
                }               if (i == dt.Rows.Count - 1) //把最后一行添上                {                      dt.Rows[firstIndex]["题目"] = dt.Rows[firstIndex]["三级标题"] + "\n" + current4; dt.Rows[firstIndex]["分值"] = current5;                }
}

  这样也实现

原文地址:https://www.cnblogs.com/chenxiya/p/10289211.html

时间: 2024-11-07 08:50:44

datatable 根据某一列数据来控制其他列合并的相关文章

gridcontrol 根据某一列数据来控制其他列合并

首先需要属性栏中设置这一列可以合并,再在CellMerge方法中写 private void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) { if (e.Column.FieldName == "题目" || e.Column.FieldName == "分值" ) { string valueFirstColumn1 = Conver

[办公应用]两个单独的列数据快速变为两列匹配关联数据

一个会计朋友有两列数据,表一内的列是"成本中心"代码(假定157个),表二的列是"承诺项"代码(假定30个).他想得到新表,包含两列数据,第一列为成本中心,第二列为对应的承诺项.也就是说,每一个成本中心30行,共计157*30行数据.如果数据少,还可以粘贴.复制,但是数据多,这个办法肯定就不行了. 怎么办呢? 刚好最近读到<让excel飞>,里面提到"查询",采用access 2007的查询功能即可方便的实现. 大致步骤如下: 1.将

Excel表格将一列数据分割成多列数据

测试格式:.xlsx, 测试软件:Wps 1. 选定一个单元,将复制的内容粘贴在其中,这是的数据是多行一列,选择文档助手 2. 点击文本处理的高级分列操作 3. 可以根据自己的需求分割,这里是按照空格分列 4. 分列结束后,所看到的就是成多列的情况,这时候就可以筛选排序等操作了 原文地址:https://www.cnblogs.com/Lunix-touch/p/12350536.html

datatable把一个LIst的数据放入两个colum防止窜行的做法

List<string> item = new List<string>(); item.Add("第一列数据"); item.Add("第二列数据"); item.Add("第三列数据"); item.Add("第四列数据"); item.Add("第五列数据"); item.Add("第六列数据"); item.Add("第七列数据");

DataTable中数据针对某列数据去重

//针对这些数据进行去重,取某一列就用这一列字段,把重复的去掉 DataSet ds = dao.get(); DataTable dt = ds.Table[0] DataView dv = dt.DefaultView; DataTable dt1 = dv.ToTable(true, "IADDDTIME"); for (int g = 0; g < dt1.Rows.Count; g++) { DateTime ITAADDDTIME = Convert.ToDateTi

DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据

#region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回      /// <summary>      /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回      /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc",1)      /// </summary>

DataTable数据修改,换列

增加列 DataTable table= new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("lName", typeof(string)); 删除列 table.Columns.Remove("Name"); 修改列名 dt.Columns["num"].ColumnName = "搜索量"; 增加行 Data

在Bootstrap开发框架中使用dataTable直接录入表格行数据(2)--- 控件数据源绑定

在前面随笔<在Bootstrap开发框架中使用dataTable直接录入表格行数据>中介绍了在Web页面中使用Jquery DataTable插件进行对数据直接录入操作,这种处理能够给用户提供较好的数据录入体验,本篇继续上篇的内容,继续介绍这个直接录入的处理操作,主要涉及到控件的初始化和数据源的绑定等操作内容,随着对这个处理的深入了解,我发现可以控制的内容也更加丰富,能够更好的实现各种所需的效果. 1.直接录入数据的界面分析 在之前介绍的数据直接录入处理的时候,界面效果如下所示. 上面的界面处

C# CreateDataAdapter 创建 DbDataAdapter,以及用DataTable的Load方法获取数据

ADO.NET中 有了DbConnection,就可用DbConnection的CreateCommand 创建DbCommand,BeginTransaction创建DbTransaction 可以十分方便的实现工厂模式,操作不同的数据库. 但是唯独DbDataAdapter这个重要的对象无法通过DbConnection或DbCommand来创建,也无法实例化,必须使用SqlDataReader这种明确的类来创建实例,导致 获取数据 的方法不能在基类实现 以下是两个解决办法: 1.只有我们自己