关闭

GridView中合并单元格

标签: gridview合并
224人阅读 评论(0) 收藏 举报
分类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI.WebControls;
///
///GridViewMergeCell 合并GridView liyang 20090916
///
public class GridViewMergeCell
{
public GridViewMergeCell()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
#region 合并单元格 合并某一行的所有列
public static void GroupRow(GridView gridView)
{
for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex–)
{
GridViewRow row = gridView.Rows[rowIndex];
GridViewRow previousRow = gridView.Rows[rowIndex + 1];
for (int i = 0; i < row.Cells.Count; i++)
{
if (row.Cells[i].Text == previousRow.Cells[i].Text)
{
row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan < 2 ? 2 :
previousRow.Cells[i].RowSpan + 1;
previousRow.Cells[i].Visible = false;
}
}
}
}
///   
///  合并GridView中某行相同信息的行(单元格)
///   
///  GridView对象 
///  需要合并的行
public static void GroupRow(GridView gridView, int rows)
{
TableCell oldTc = gridView.Rows[rows].Cells[0];
for (int i = 1; i < gridView.Rows[rows].Cells.Count; i++)
{
TableCell tc = gridView.Rows[rows].Cells[i];  //Cells[0]就是你要合并的列
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.ColumnSpan == 0)
{
oldTc.ColumnSpan = 1;
}
oldTc.ColumnSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
}
#endregion
#region 合并单元格 合并一行中的几列
///
/// 合并单元格 合并一行中的几列
///
/// GridView ID
/// 行
/// 开始列
/// 结束列
public static void GroupRow(GridView gridView, int rows, int sCol, int eCol)
{
TableCell oldTc = gridView.Rows[rows].Cells[sCol];
for (int i = 1; i < eCol - sCol; i++)
{
TableCell tc = gridView.Rows[rows].Cells[i + sCol];  //Cells[0]就是你要合并的列
tc.Visible = false;
if (oldTc.ColumnSpan == 0)
{
oldTc.ColumnSpan = 1;
}
oldTc.ColumnSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
}
#endregion
#region 合并单元格 合并某一列所有行
///
/// 合并GridView中某列相同信息的行(单元格)
///
///
///
public static void GroupCol(GridView gridView, int cols)
{
if (gridView.Rows.Count < 1 || cols > gridView.Rows[0].Cells.Count - 1)
{
return;
}
TableCell oldTc = gridView.Rows[0].Cells[cols];
for (int i = 1; i < gridView.Rows.Count; i++)
{
TableCell tc = gridView.Rows[i].Cells[cols];
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.RowSpan == 0)
{
oldTc.RowSpan = 1;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
}
#endregion
#region 合并单元格 合并某一列中的某些行
///
/// 合并单元格 合并某一列中的某些行
///
/// GridView ID
/// 列
/// 开始行
/// 结束列
public static void GroupCol(GridView gridView, int cols, int sRow, int eRow)
{
if (gridView.Rows.Count < 1 || cols > gridView.Columns.Count - 1)
{
return;
}
TableCell oldTc = gridView.Rows[sRow].Cells[cols];
for (int i = 1; i < eRow - sRow; i++)
{
TableCell tc = gridView.Rows[sRow + i].Cells[cols];
tc.Visible = false;
if (oldTc.RowSpan == 0)
{
oldTc.RowSpan = 1;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
}
#endregion
}

转自 http://blog.csdn.net/xinshi9608/article/details/5642382

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android GridView之实现单元格合并,以及第一个item点击无响应或显示不正常的解决方案

个人觉得 GridView 中实现单元格合并的需求并不常见,但是这里还是介绍一种方法,先看一下效果图: 接下来是代码实现: public class MainActivity extends Activity { private static GridView mGridView; ...
  • liuwan1992
  • liuwan1992
  • 2016-10-14 19:53
  • 5058

如何实现gridview合并某列单元格

在做评教系统的时候遇到这样一个问题,在评分主界面上需要显示每一条考核项目的分,即 1、职业道德: 2、工作态度: 3、业务能力: 4、工作效率: 5、廉洁自律: 相应的在每一项后面又有相应的解释,比如,职业道德后需要加上: 1、 在岗位上兢兢业业 2、 能够对待学生。 3、...
  • laner0515
  • laner0515
  • 2012-09-28 20:05
  • 6699

纵向合并gridview单元格的两种方法

 比如说有这样一组数据用gridview展示出来是这样 name num a 0 a ...
  • luq885
  • luq885
  • 2007-05-19 15:26
  • 11263

gridview合并单元格

效果如图 代码如下。  private void RowSpan() { int n, m ,j; for (int i = 0; i < GridView1.Rows.Count; i++) { n = 1; ...
  • HelloXiaoyu
  • HelloXiaoyu
  • 2008-05-29 13:22
  • 1053

水平触发,边缘触发

在linux的IO多路复用中有水平触发,边缘触发
  • liuxingen
  • liuxingen
  • 2014-08-11 17:08
  • 12229

水平触发和边缘触发

水平触发 绪通知方式是水平触发,也就说如果内核通知应用层某一个文件描述符已经就绪,而如果应用层此后一直没有完整的处理该描述符(没有读取完相应的数据或者没有写入任何数据),那么内核会不断地通知应用层该文件描述符已经就绪。这就是所谓的水平触发:只要条件满足,那内核就会触发一个事件(只要文件描述符对应的数...
  • feengzhk
  • feengzhk
  • 2017-04-19 23:11
  • 167

GridView 单元格合并

GridView单元格合并,不仅适用于BoundField类型,也适用于其他列类型
  • wengst
  • wengst
  • 2010-10-19 14:46
  • 555

GridView合并单元格

GridView合并单元格,引合并单元格,实际上是合并数据结构.然后把处理后的数据绑定到GridView控件中. 关键代码: /// /// 合并GridView单元格 /// public class MergeGridViewCell { //...
  • lovegonghui
  • lovegonghui
  • 2015-11-13 11:59
  • 427

水平触发和边缘触发的区别

在linux的IO多路复用中有水平触发,边缘触发两种模式,这两种模式的区别如下:      水平触发:如果文件描述符已经就绪可以非阻塞的执行IO操作了,此时会触发通知.允许在任意时刻重复检测IO的状态.select,poll就属于水平触发.    ...
  • D_Guco
  • D_Guco
  • 2017-05-07 22:02
  • 1136

17.2 边缘触发和条件触发

1. 两者区别:在于发生事件的时间点,条件触发:只要输入缓冲有数据就一直通知该事件;边缘触发:输入缓冲受到数据时仅注册一次事件。 epoll默认以条件触发方式工作,select也是以条件触发模式工作的。 2. 条件触发事件特性: #include #include #inc...
  • wenwen111111
  • wenwen111111
  • 2017-02-04 21:02
  • 47
    个人资料
    • 访问:137142次
    • 积分:1850
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:99篇
    • 译文:1篇
    • 评论:36条
    最新评论