zoukankan
html css js c++ java
GridView合并行代码
图:
Code
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
IsPostBack)
{
DataTable oDataSource
=
CreateTable();
DataView oDV
=
oDataSource.DefaultView;
oDV.Sort
=
"
StudentNo
"
;
GvStudent.DataSource
=
oDV;
GvStudent.DataBind();
}
}
private
DataTable CreateTable()
{
DataTable oDT
=
new
DataTable();
oDT.Columns.Add(
"
StudentNo
"
);
oDT.Columns[
0
].DataType
=
typeof
(System.Int32);
DataColumn oDC
=
new
DataColumn(
"
StudentName
"
,
typeof
(System.String));
oDT.Columns.Add(oDC);
oDT.Columns.Add(
"
Do1
"
);
oDT.Columns.Add(
"
Do2
"
);
DataRow oDR
=
oDT.NewRow();
oDR[
0
]
=
1001
;
oDR[
"
StudentName
"
]
=
"
小张
"
;
oDR[
"
Do1
"
]
=
"
学国学
"
;
oDR[
"
Do2
"
]
=
"
学英语
"
;
oDT.Rows.Add(oDR);
DataRow oDR1
=
oDT.NewRow();
oDR1[
"
StudentNo
"
]
=
1004
;
oDR1[
1
]
=
"
小李
"
;
oDR1[
2
]
=
"
闲着
"
;
oDR1[
3
]
=
"
继续闲着
"
;
oDT.Rows.Add(oDR1);
DataRow oDR2
=
oDT.NewRow();
oDR2[
0
]
=
1001
;
oDR2[
"
StudentName
"
]
=
"
小张
"
;
oDR2[
"
Do1
"
]
=
"
学英语
"
;
oDR2[
"
Do2
"
]
=
"
学法语
"
;
oDT.Rows.Add(oDR2);
return
oDT;
}
int
iPreStudentNo, iCurrentStudentNo;
int
iPreRowNum;
int
iMergeBegin
=
2
, iMergeEnd
=
3
;
protected
void
GvStudent_RowDataBound(
object
sender, GridViewRowEventArgs e)
{
if
(e.Row.RowType
==
DataControlRowType.DataRow)
{
DataRowView drv
=
e.Row.DataItem
as
DataRowView;
GridViewRow oRow
=
e.Row;
int
.TryParse(drv[
"
StudentNo
"
].ToString(),
out
iCurrentStudentNo);
if
(oRow.RowIndex
>
0
)
{
//
第二条记录才进行是否合并
if
(iCurrentStudentNo
!=
iPreStudentNo)
{
if
(oRow.RowIndex
-
iPreRowNum
>
1
)
{
AddRowSpanForColumns(GvStudent.Rows[iPreRowNum], iMergeBegin, iMergeEnd, oRow.RowIndex
-
iPreRowNum);
}
iPreStudentNo
=
iCurrentStudentNo;
iPreRowNum
=
oRow.RowIndex;
}
else
{
RemoveColumnsFromRow(oRow, iMergeBegin, iMergeEnd);
}
}
else
{
//
第一条记录
iPreStudentNo
=
iCurrentStudentNo;
iPreRowNum
=
oRow.RowIndex;
}
}
}
Combination Columns
#region
Combination Columns
private
void
AddRowSpanForColumns(GridViewRow oRow,
int
iIndexOfColumnBegin,
int
iIndexOfColumnEnd,
int
iRowspan)
{
//
给上一个相同的加上Span
for
(
int
i
=
0
; i
<
oRow.Cells.Count; i
++
)
{
if
(i
<
iIndexOfColumnBegin
||
i
>
iIndexOfColumnEnd)
{
oRow.Cells[i].RowSpan
=
iRowspan;
}
}
}
/**/
///
<summary>
///
移除列,进行合并
///
</summary>
///
<param name="oRow"></param>
///
<param name="iIndexOfColumnBegin"></param>
///
<param name="iIndexOfColumnEnd"></param>
private
void
RemoveColumnsFromRow(TableRow oRow,
int
iIndexOfColumnBegin,
int
iIndexOfColumnEnd)
{
for
(
int
i
=
0
; i
<
oRow.Cells.Count; i
++
)
{
if
(i
<
iIndexOfColumnBegin
||
i
>
iIndexOfColumnEnd)
{
oRow.Cells.RemoveAt(i);
i
--
;
iIndexOfColumnBegin
--
;
iIndexOfColumnEnd
--
;
}
}
}
#endregion
查看全文
相关阅读:
(转) 解析 char *p和 char[]
Linux下C程序内存、内存对齐问题 (实战)
关于子网划分的两个例子
子网掩码与子网划分 (转载)
A、B、C类地址及子网掩码学习笔记
本机ip、127.0.0.1和0.0.0.0区别(转载)
初识const
流媒体协议
i2c-tools的使用方法
linux ——内存共享映射mmap和munmap
原文地址:https://www.cnblogs.com/chinabc/p/1592952.html
最新文章
DOM动态加载脚本或者css
Document对象的一些小总结
DOM-element 特性的读取总结
关于类数组和字符串数组
存储API
DOM增删改
Chrome 39 CSS3 渐变动画BUG
table边框重叠导致的单元格边框宽度问题
类似table的固定容器高度的CSS垂直居中方法
leetcode_1
热门文章
vassistx
拷贝构造函数内存泄漏的例子
引用
c++面向对象解圆的面积
20170602
20170529
20170519
20170518
20170512
关于常量和变量
Copyright © 2011-2022 走看看