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企业应用研发
查看全文
相关阅读:
swfupdate flash上传工具
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服 务器。请验证实例名称是否正确并且 SQL Server 已配置为允
多对多 一对一 一对多 主从 关联 字典
JavaScript面向对象
vue的transition过渡效果
【译】Learn ES2015——箭头函数
vue的选项
JavaScript模块化
vue-router
vuex是啥
原文地址:https://www.cnblogs.com/syveen/p/231774.html
最新文章
RabbitMQ各种交换机类型Exchange Types介绍
Python twisted事件驱动网络框架 源码剖析
使用select异步IO实现socketserver服务器 源码剖析
MSDN XPath
国外C++ 程序员收藏
记录一下 post
十月假期回来,收获颇多
QT 操作记录,待实践
QT4.8 使用plot3D
QT 4.8 样式表
热门文章
Qt界面美工实例
AD
Signals 和 Slot 的区别
如何在oracle中导入dmp数据库文件
Oracle建立表空间和用户
Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
jquery的extend和fn.extend的使用说明
通用sqlserver分页存储过程
oracle创建表空间
Flash上传文件(结合asp.net)
Copyright © 2011-2022 走看看