zoukankan
html css js c++ java
设置DataGrid多层表头
/**/
///
<summary>
///
方法编号:05
///
方法名称:SetMultiLayerHeader
///
内容摘要:创建DataGrid多层表头
///
算法思路:建立一个ArrayList(1)来放置表征表头的ArrayList(2),通过这种结构来自动生成多层表头
///
数组2的格式要求为:"内容,[rowspan/colspan],[colspan/colspan的值],[样式哈希表]"(带[]的可选)
///
其中[样式哈希表]的为:key/value的对应关系,如Hashtable_style.Add("Font-size","12pt");
///
</summary>
public
void
SetMultiLayerHeader(DataGrid m_grid,
System.Web.UI.WebControls.DataGridItemEventArgs e,
ArrayList m_headers)
{
e.Item.Visible
=
false
;
//
处理特殊情况
if
(m_grid.Controls.Count
<=
0
)
{
return
;
}
Table m_tb
=
(Table)m_grid.Controls[
0
];
int
m_iTmp
=
0
;
处理多行表头的实体
#region
处理多行表头的实体
foreach
(
object
obj
in
m_headers)
{
DataGridItem m_dg
=
new
DataGridItem(
0
,
0
,ListItemType.Header);
ArrayList m_arrHeader
=
(ArrayList)obj;
TableCell[] m_cells
=
new
TableCell[m_arrHeader.Count];
for
(
int
i
=
0
; i
<
m_cells.Length; i
++
)
{
m_cells[i]
=
new
TableCell();
object
[] m_arr
=
(
object
[])m_arrHeader[i];
m_cells[i].Text
=
m_arr.GetValue(
0
).ToString();
//
赋header文字
if
(m_arr.Length
>
1
)
//
如果有行列属性
{
if
(m_arr.GetValue(
1
).ToString().ToLower()
==
"
rowspan
"
)
//
如果有rowspan属性
{
m_cells[i].RowSpan
=
Convert.ToInt32(m_arr.GetValue(
2
));
}
else
if
(m_arr.GetValue(
1
).ToString().ToLower()
==
"
colspan
"
)
//
如果有colspan属性
{
m_cells[i].ColumnSpan
=
Convert.ToInt32(m_arr.GetValue(
2
));
}
//
处理单元格的样式
if
(m_arr.Length
>=
4
)
{
if
(m_arr.GetValue(
3
)
!=
null
)
{
Hashtable m_hsStyles
=
(Hashtable)m_arr.GetValue(
3
);
if
(m_hsStyles.Count
>
0
)
{
System.Collections.IDictionaryEnumerator m_style
=
m_hsStyles.GetEnumerator();
for
(
int
j
=
0
; j
<
m_hsStyles.Count; j
++
)
{
m_style.MoveNext();
m_cells[i].Style.Add(m_style.Key.ToString(),m_style.Value.ToString());
}
}
}
}
//
if (m_arr.Length > 4) 结束
}
//
if (m_arr.Length > 1)
//
如果有行列属性 结束
}
//
for (int i=0; i< m_cells.Length; i++) 结束
//
将cell加入DataGridItem
foreach
(TableCell c
in
m_cells)
{
m_dg.Cells.Add(c);
}
//
将DataGridItem加入DataGrid
if
(m_grid.AllowPaging
==
true
||
m_grid.AllowCustomPaging
==
true
)
//
如果有分页
{
m_tb.Rows.AddAt(m_iTmp
+
1
,m_dg);
}
else
//
如果没有分页(处理导出excel时)
{
m_tb.Rows.AddAt(m_iTmp,m_dg);
}
m_iTmp
++
;
}
//
foreach (object obj in m_headers) 结束
#endregion
处理多行表头的实体
}
使用方法:
ArrayList m_headers
=
new
ArrayList();
ArrayList m_arrHeader1
=
new
ArrayList();
m_arrHeader1.Add(
new
object
[]
{
"
事业部
"
,
"
rowspan
"
,
"
2
"
}
);
m_arrHeader1.Add(
new
object
[]
{
"
办事处
"
,
"
rowspan
"
,
"
2
"
}
);
m_arrHeader1.Add(
new
object
[]
{
"
每月合同培训完成名额数
"
,
"
colspan
"
,
"
12
"
}
);
m_arrHeader1.Add(
new
object
[]
{
"
合计
"
,
"
rowspan
"
,
"
2
"
}
);
m_arrHeader1.Add(
new
object
[]
{
"
积压<br>名额数
"
,
"
rowspan
"
,
"
2
"
}
);
ArrayList m_arrHeader2
=
new
ArrayList();
for
(
int
i
=
0
; i
<
12
; i
++
)
{
m_arrHeader2.Add(
new
object
[]
{(i
+
1
).ToString()
+
"
月
"
}
);
}
m_headers.Add(m_arrHeader1);
m_headers.Add(m_arrHeader2);
this
.m_BLL.SetMultiLayerHeader(
this
.dgrSalesList,e,m_headers);
愿一路奔跑不退缩,到目前一直从事.Net的B/S,C/S企业应用研发
查看全文
相关阅读:
实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
实验 3:Mininet 实验——测量路径的损耗率
福州大学软件工程实践个人编程作业
实验 2:Mininet 实验——拓扑的命令脚本生成
实验 1:Mininet 源码安装和可视化拓扑工具
2020软件工程实践第一次作业
魏迟燕的自走棋
中位数之最
A Simple Math Problem
数字的升级准则
原文地址:https://www.cnblogs.com/syveen/p/231774.html
最新文章
福大软工 · 第十次作业
Beta 冲刺(1/7)
《Hadoop实战》之 Streaming
《机器学习实战》之一:knn(python代码)
pandas数据结构之DataFrame操作
pandas数据结构之series操作
1.1python解决数学建模之席位分配问题
python爬百度文库课件
机器学习题库汇总/面试题
leetcode之栈:[232] 用栈实现队列
热门文章
eclipse tomcat配置
数据挖掘之特征选择(sklearn)
数据挖掘之交叉验证(sklearn)
pytorch实现CCN之VGG16简化版的DogsVsCats分类(kaggle)
《Hadoop实战》之联结不同来源的数据
《Hadoop实战》之链接多个MapReduce作业
《Hadoop实战》之Combiner
实验 7:OpenDaylight 实验——Python 中的 REST API 调用
实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
Copyright © 2011-2022 走看看