zoukankan
html css js c++ java
Datagrid中隐藏、合并相同文字列
/**/
///
<summary>
///
方法编号:06
///
方法名称:CombineRepeatedCell
///
内容摘要:文字相同的列的合并
///
算法思路:将相同的连续单元格想象成“块”,将"块"放置在数据容器中,全部遍历相加需合并的单元格的rowspan,来进行合并隐藏的动作
///
</summary>
///
<param name="m_arrIndex">
需要合并的列的index数据
</param>
public
void
CombineRepeatedCell(DataGrid m_grid,
int
[] m_arrIndex)
{
foreach
(
int
m_colIndex
in
m_arrIndex)
//
列
{
ArrayList m_hidCells
=
new
ArrayList();
//
得到需合并的item
for
(
int
i
=
0
; i
<
m_grid.Items.Count; i
++
)
{
//
第一行不用比较,并终止比较于最后一行
if
(i
==
0
||
i
==
(m_grid.PageSize
*
m_grid.CurrentPageIndex))
{
m_hidCells.Add(m_grid.Items[i].Cells[m_colIndex]);
continue
;
}
//
文字相同时
if
(
string
.Compare(m_grid.Items[i].Cells[m_colIndex].Text,m_grid.Items[i
-
1
].Cells[m_colIndex].Text)
==
0
)
{
m_hidCells.Add(m_grid.Items[i].Cells[m_colIndex]);
}
//
文字不同,或文字相同但已到最后一行
if
(m_grid.Items[i].Cells[m_colIndex].Text
!=
m_grid.Items[i
-
1
].Cells[m_colIndex].Text
||
i
==
m_grid.Items.Count
-
1
)
{
//
一旦发现有不同的文字,即表示单元格块的结束
if
(m_hidCells.Count
<=
0
)
//
无需合并
{
return
;
}
int
m_iRowspan
=
0
;
//
待合并的单元格的Rowspan
foreach
(TableCell c
in
m_hidCells)
{
m_iRowspan
+=
(c.RowSpan
>
0
)
?
c.RowSpan :
1
;
}
for
(
int
ii
=
1
; ii
<=
m_hidCells.Count
-
1
; ii
++
)
{
((TableCell)m_hidCells[ii]).Visible
=
false
;
}
((TableCell)m_hidCells[
0
]).RowSpan
=
m_iRowspan;
//
开始制作新的容器
m_hidCells
=
new
ArrayList();
m_hidCells.Add(m_grid.Items[i].Cells[m_colIndex]);
continue
;
}
//
for 结束
}
//
foreach 结束
}
//
foreach (int i in m_arrIndex) 结束
}
//
CombineRepeatedCell 结束
/**/
///
<summary>
///
方法编号:03
///
方法名称:HideRepeatedCell
///
内容摘要:文字相同的列的隐藏
///
算法思路:不能在循环ITEM的时候进行合并或隐藏,以免比较出现错误
///
只能暂先放置在容器中,全部遍历方进行合并隐藏的动作
///
</summary>
///
<param name="m_grid"></param>
///
<param name="m_arrIndex">
需要隐藏的列的index数据
</param>
public
void
HideRepeatedCell(DataGrid m_grid,
int
[] m_arrIndex)
{
if
(m_arrIndex.Length
<=
0
)
//
检查特异情况
{
return
;
}
//
处理重复时隐藏
ArrayList m_hidCells
=
new
ArrayList();
//
得到需隐藏的item
foreach
(DataGridItem item
in
m_grid.Items)
{
if
(item.ItemType
==
ListItemType.Item
||
item.ItemType
==
ListItemType.AlternatingItem)
{
//
如果为第一行,且跳过
if
(item.ItemIndex
==
0
||
item.ItemIndex
==
(m_grid.PageSize
*
m_grid.CurrentPageIndex))
{
continue
;
}
foreach
(
int
m_colIndex
in
m_arrIndex)
{
if
(item.Cells[m_colIndex].Text
==
m_grid.Items[item.ItemIndex
-
1
].Cells[m_colIndex].Text)
{
m_hidCells.Add(item.Cells[m_colIndex]);
}
else
{
break
;
}
}
}
//
if (item.ItemType == ListItemType.Item
结束
}
//
foreach (DataGridItem item in m_grid.Items) 结束
//
开始隐藏
foreach
(
object
obj
in
m_hidCells)
{
((TableCell)obj).Text
=
string
.Empty;
}
}
//
HideRepeatedCell 结束
愿一路奔跑不退缩,到目前一直从事.Net的B/S,C/S企业应用研发
查看全文
相关阅读:
linux 切换图形界面
google浏览器插件源码目录查询
subline注册码
mongodb数组多值查询(条件:数据库中必须包含条件信息)
SpringBoot多数据源解决方案(转载)
腾讯云服务器做代理
多线程经典问题顺序打印
flume 1.7在windows下的安装部署与测试运行
解决spring-boot-maven-plugin插件打包,springboot启动时报找不到主main问题
MYSQL的B+Tree索引树高度如何计算
原文地址:https://www.cnblogs.com/syveen/p/231763.html
最新文章
一、VUE项目BaseCms系列文章:项目介绍与环境配置
VUE 实现复制内容到剪贴板功能
[VUE ERROR] Invalid prop: type check failed for prop "list". Expected Array, got Undefined
VUE axios 发送 Form Data 格式数据请求
input 输入框 change 事件和 blur 事件
[VUE ERROR] Invalid default value for prop "slides": Props with type Object/Array must use a factory function to return the default value
[VUE ERROR] Error in render: "TypeError: Cannot create property 'header' on boolean 'true'"
[VUE ERROR] Duplicate keys detected: 'tab-user'. This may cause an update error.
python爬取抖音热搜视频
python web框架性能对比测试
热门文章
python自动提取文本中的时间(包含中文日期)
python编码及requests乱码问题
百度接口调用-失信人、手机号码归属地获取
Fiddler微信公众号列表、浏览/查看量、评论数据抓取
SQLAlchemy mysql插入特殊字符错误
python 生成二维码并添加头像
JS爬取高德地图地址信息(周边设施经纬度)
初识BloomFilter--布隆过滤器以及Python简单代码实现
开源数据源网站
记linux升级python版本
Copyright © 2011-2022 走看看