[C#]合并单元格(行、列)
详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak
説明:控件ID指的是页面上面的GridView控件的ID名称或者是DataGrid控件的ID名称; 控件类型写GridView或者DataGrid(根据页面控件属于那种就写那种)。 如有疑问请留言。。。。。。。 /// <summary>
/// 合并单元格(合并某一行的所有列)
/// </summary>
/// <param name="id">控件的ID</param>
/// <param name="type">控件类型对象(如写GridView,DataGrid)</param>
/// <param name="rows">需要合并的行</param>
public static void GroupRow(string id,string type, int rows)
{
Control contr = new Control();
TableCell oldTc = null;
switch(type)
{
case "GridView":
GridView GridView1 = (GridView)contr.FindControl(id);
oldTc = GridView1.Rows[rows].Cells[];
for (int i = ; i < GridView1.Rows[rows].Cells.Count; i++)
{
TableCell tc = GridView1.Rows[rows].Cells[i]; //Cells[0]就是你要合并的列
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.ColumnSpan == )
{
oldTc.ColumnSpan = ;
}
oldTc.ColumnSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
break;
case "DataGrid":
DataGrid DataGrid1 = (DataGrid)contr.FindControl(id);
oldTc = DataGrid1.Items[rows].Cells[];
for (int i = ; i < DataGrid1.Items[rows].Cells.Count; i++)
{
TableCell tc = DataGrid1.Items[rows].Cells[i]; //Cells[0]就是你要合并的列
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.ColumnSpan == )
{
oldTc.ColumnSpan = ;
}
oldTc.ColumnSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
break;
}
} /// <summary>
/// 合并单元格(合并一行中的几列)
/// </summary>
/// <param name="id">控件ID</param>
/// <param name="type">控件类型对象(如写GridView,DataGrid)</param>
/// <param name="rows">行</param>
/// <param name="sCol">开始列</param>
/// <param name="eCol">结束列</param>
public static void GroupRow(string id, string type, int rows, int sCol, int eCol)
{
Control contr = new Control();
TableCell oldTc = null;
switch (type)
{
case "GridView":
GridView GridView1 = (GridView)contr.FindControl(id);
oldTc = GridView1.Rows[rows].Cells[sCol];
for (int i = ; i < eCol - sCol; i++)
{
TableCell tc = GridView1.Rows[rows].Cells[i + sCol]; //Cells[0]就是你要合并的列
tc.Visible = false;
if (oldTc.ColumnSpan == )
{
oldTc.ColumnSpan = ;
}
oldTc.ColumnSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
break;
case "DataGrid":
DataGrid DataGrid1 = (DataGrid)contr.FindControl(id);
oldTc = DataGrid1.Items[rows].Cells[sCol];
for (int i = ; i < eCol - sCol; i++)
{
TableCell tc = DataGrid1.Items[rows].Cells[i + sCol]; //Cells[0]就是你要合并的列
tc.Visible = false;
if (oldTc.ColumnSpan == )
{
oldTc.ColumnSpan = ;
}
oldTc.ColumnSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
break;
}
} /// <summary>
/// 合并单元格(合并某一列所有行)
/// </summary>
/// <param name="id">控件ID</param>
/// <param name="type">控件类型对象(如写GridView,DataGrid)</param>
/// <param name="cols">需要合并的列</param>
public static void GroupCol(string id, string type, int cols)
{
Control contr = new Control();
if (type == "GridView")
{
GridView GridView1 = (GridView)contr.FindControl(id); if (GridView1.Rows.Count < || cols > GridView1.Rows[].Cells.Count - )
{
return;
}
TableCell oldTc = GridView1.Rows[].Cells[cols];
for (int i = ; i < GridView1.Rows.Count; i++)
{
TableCell tc = GridView1.Rows[i].Cells[cols];
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.RowSpan == )
{
oldTc.RowSpan = ;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
}
else
{
DataGrid DataGrid1 = (DataGrid)contr.FindControl(id); if (DataGrid1.Items.Count < || cols > DataGrid1.Items[].Cells.Count - )
{
return;
}
TableCell oldTc = DataGrid1.Items[].Cells[cols];
for (int i = ; i < DataGrid1.Items.Count; i++)
{
TableCell tc = DataGrid1.Items[i].Cells[cols];
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.RowSpan == )
{
oldTc.RowSpan = ;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
}
} /// <summary>
/// 合并单元格(合并某一列中的某些行)
/// </summary>
/// <param name="id">控件ID</param>
/// <param name="type">控件类型对象(如写GridView,DataGrid)</param>
/// <param name="cols">列</param>
/// <param name="sRow">开始行</param>
/// <param name="eRow">结束列</param>
public static void GroupCol(string id, string type, int cols, int sRow, int eRow)
{
Control contr = new Control();
TableCell oldTc = null;
switch(type)
{
case "GridView":
GridView GridView1 = (GridView)contr.FindControl(id);
if (GridView1.Rows.Count < || cols > GridView1.Columns.Count - )
{
return;
}
oldTc = GridView1.Rows[sRow].Cells[cols];
for (int i = ; i < eRow - sRow; i++)
{
TableCell tc = GridView1.Rows[sRow + i].Cells[cols];
tc.Visible = false;
if (oldTc.RowSpan == )
{
oldTc.RowSpan = ;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
break;
case "DataGrid":
DataGrid DataGrid1 = (DataGrid)contr.FindControl(id);
if (DataGrid1.Items.Count < || cols > DataGrid1.Columns.Count - )
{
return;
}
oldTc = DataGrid1.Items[sRow].Cells[cols];
for (int i = ; i < eRow - sRow; i++)
{
TableCell tc = DataGrid1.Items[sRow + i].Cells[cols];
tc.Visible = false;
if (oldTc.RowSpan == )
{
oldTc.RowSpan = ;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
break;
default:
break;
}
}
[C#]合并单元格(行、列)的更多相关文章
- poi导出excel合并单元格(包括列合并、行合并)
1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-2012 ...
- DataGridView合并单元格(一列或一行)
#region"合并单元格的测试(一列或一行)" // int?是搜索一种类型(可空类型),普通的int不能为null,而用int?,其值可以为null //private int ...
- Java导出Excel表,POI 实现合并单元格以及列自适应宽度(转载)
POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...
- POI 实现合并单元格以及列自适应宽度
POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...
- EasyUi 合并单元格占列显示
$("#TableContainer").datagrid({ url: '', method: "get&q ...
- jquery操作表格 合并单元格
jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...
- 【记录】解析具有合并单元格的Excel
最近公司让做各种数据表格的导入导出,就涉及到电子表格的解析,做了这么多天总结一下心得. 工具:NOPI 语言:C# 目的:因为涉及到导入到数据库,具有合并单元格的多行必然要拆分,而NPOI自动解析的时 ...
- 【开发者笔记】解析具有合并单元格的Excel
最近公司让做各种数据表格的导入导出,就涉及到电子表格的解析,做了这么多天总结一下心得. 工具:NOPI 语言:C# 目的:因为涉及到导入到数据库,具有合并单元格的多行必然要拆分,而NPOI自动解析的时 ...
- 个人永久性免费-Excel催化剂功能第52波-相同内容批量合并单元格,取消合并单元格并填充内容
在高级Excel用户群体中无比痛恨的合并单元格,在现实的表格中却阴魂不散的纠缠不断.今天Excel催化剂也来成为“帮凶”,制造更多的合并单元格.虽然开发出此功能,请使用过程中务必要保持节制,在可以称为 ...
随机推荐
- 关于c3p0 ResourcePoolException: Attempted to use a closed or broken resource pool
转自:https://blog.csdn.net/u011404265/article/details/52848603 springmvc-servlet.xml加入 <property na ...
- angular的service与factory
angular里的service是一个单例对象,在应用生命周期结束的时候(关闭浏览器)才会被清除.而controllers在不需要的时候就会被销毁了. factory是angular里的一种ser ...
- C++提高编译与链接速度的资料
1,https://blog.csdn.net/lihao21/article/details/47610309 2,https://www.zhihu.com/question/37330979 3 ...
- Sersync + Rsync 代码分发
简介: Sersync 是基于 inotify 来编写的 Linux 系统文件监控工具,当监控到文件发生变化时,调用 rsync 同步文件. 类似的功能,以前有用 rsync + inotify 实现 ...
- Synchronized块同步变量的误区
我们可以通过synchronized块来同步特定的静态或非静态方法.要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传 ...
- PHP - 模拟HTTP请求, stream_context_create 和 fopen 和 fsockopen
一.fsocketopen,使用这个的过程看起来更像别的语言的socket编程 public function send($request) { /* 请求数据 */ $post_data = $re ...
- Linux运维基础入门(三):网络基础知识梳理03
一,ARP协议 使用ARP协议可以查出擅自更改IP地址主机的MAC地址.在学习ARP协议前需要了解广播和广播域的相关概念. 1.1 广播与广播域 在超市找人时,如果不知道对方的位置就需要到服务台通过广 ...
- Linux重启mysql Error getting authority: Error initializing authority: Could not connect: Resource temporarily unavailable (g-io-error-quark, 27)
问题: Linux下重启mysql: systemctl restart mysqld 出现以下错误: Error getting authority: Error initializing auth ...
- 欲望都市游戏设计 背景图层和UI图层的设计
- 【HDU1542】Atlantis
题意 给出n个矩形的左下角和右上角的坐标,计算总的面积(相交部分只算一次). 分析 线段树扫描线的模板题. 将每个矩形都拆成上下两条线段,然后从下网上扫,当遇到底边时就加上这个区间,遇到顶边时,就减去 ...