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企业应用研发
查看全文
相关阅读:
【日语】标日初级上册单词(5-8)1
【日语】标日初级上册单词(1-4)1
【日语】计算机日语
百家姓日语
【日语】动物名称日语单词集合
【日语】日语常用会话1000句
【日语】编程相关日语词汇
【日语】日语N5学习
【日语】日语新闻核心词汇
使用uni-app开发微信小程序之登录模块
原文地址:https://www.cnblogs.com/syveen/p/231774.html
最新文章
关于try catch finally的执行顺序解释
const和define的差别
atexit()使用
C++ 操作符、局部 全局变量及自动转换原则
i=i+1,i+=1,i++哪个执行效率最高?为什么?
Mysql 存储引擎
转:QTCreater调试时提示ptrace不允许的操作(点击调试之后40秒钟gdb无回应)
qtcreator_process_stub中文输出乱码
ubuntu安转QTcreator出现The default mkspec symlink is broken
TCP 流量控制、拥塞控制
热门文章
浏览器的一个请求从发送到返回经历了什么(转)
用js如何获取一个上传文件的扩展名
25种提高网页加载速度的方法和技巧
ie和dom事件流的区别
写一个trim函数,兼容IE firefox chrome(正则)
HTTPS和HTTP有什么区别
为什么 ReactJS 不适合复杂的前端项目?
react.js的了解
json和jsonp
请描述一下 cookies,sessionStorage和localStorage的区别?
Copyright © 2011-2022 走看看