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企业应用研发
查看全文
相关阅读:
阿里巴巴JAVA开发手册
2018开源中国最受欢迎的中国软件
Java并发编程(多线程)中的相关概念
关于HashMap自定义key重写hashCode和equals的问题
MySQL视图 索引 存储过程 触发器 函数
MySql/Oracle树形结构查询
码农也来关注下经济问题<美元加息>对我们的影响
不懂技术却能做到月入20万美元,差距在哪里
solidity智能合约如何判断mapping值为空
微信很好用却很少人知道的浮窗功能
原文地址:https://www.cnblogs.com/syveen/p/231763.html
最新文章
LeetCode 面试题56
LeetCode 33. 搜索旋转排序数组
Java生鲜电商平台-缓存架构实战
Java生鲜电商平台-统一异常处理及架构实战
Java生鲜电商平台-促销架构以及秒杀解决方案实战
Java生鲜电商平台-高并发核心技术订单与库存实战
Java生鲜电商平台-B2B生鲜的互联网思维
Java生鲜电商平台-深入订单拆单架构与实战
Java生鲜电商平台-订单配送模块的架构与设计
Java生鲜电商平台-用户管理的架构与实战
热门文章
Java生鲜电商平台-生鲜供应链(采购管理)
Java生鲜电商平台-订单中心服务架构与异常订单逻辑
你真的以为计算机网络不重要吗,这份书单帮你搞定相关面试题!
学好程序员必知必会的数据结构,这一份书单你值得拥有!
送你一份Redis书单,以后使用缓存的问题不用再问我啦!
这本最适合夯实基础的经典 Java 书籍,可能 80% 的 Java 程序员没认真看过!
这份Java Web必读书单,值得所有Java工程师一看!
浅析Java中的23种设计模式
深入理解Java的堆内存和线程内存
浅析JAVA中堆内存与栈内存的区别
Copyright © 2011-2022 走看看