-
GridView合并行代码
图:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
protected void Page_Load(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
if (!IsPostBack)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
DataTable oDataSource = CreateTable();
DataView oDV = oDataSource.DefaultView;
oDV.Sort = "StudentNo";
GvStudent.DataSource = oDV;
GvStudent.DataBind();
}
}
private DataTable CreateTable()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
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");
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DataRow oDR = oDT.NewRow();
oDR[0] = 1001;
oDR["StudentName"] = "小张";
oDR["Do1"] = "学国学";
oDR["Do2"] = "学英语";
oDT.Rows.Add(oDR);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DataRow oDR1 = oDT.NewRow();
oDR1["StudentNo"] = 1004;
oDR1[1] = "小李";
oDR1[2] = "闲着";
oDR1[3] = "继续闲着";
oDT.Rows.Add(oDR1);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DataRow oDR2 = oDT.NewRow();
oDR2[0] = 1001;
oDR2["StudentName"] = "小张";
oDR2["Do1"] = "学英语";
oDR2["Do2"] = "学法语";
oDT.Rows.Add(oDR2);
return oDT;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int iPreStudentNo, iCurrentStudentNo;
int iPreRowNum;
int iMergeBegin = 2, iMergeEnd = 3;
protected void GvStudent_RowDataBound(object sender, GridViewRowEventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
if (e.Row.RowType == DataControlRowType.DataRow)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
DataRowView drv = e.Row.DataItem as DataRowView;
GridViewRow oRow=e.Row;
int.TryParse(drv["StudentNo"].ToString(), out iCurrentStudentNo);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (oRow.RowIndex > 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//第二条记录才进行是否合并
if (iCurrentStudentNo != iPreStudentNo)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (oRow.RowIndex - iPreRowNum > 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
AddRowSpanForColumns(GvStudent.Rows[iPreRowNum], iMergeBegin, iMergeEnd, oRow.RowIndex - iPreRowNum);
}
iPreStudentNo = iCurrentStudentNo;
iPreRowNum = oRow.RowIndex;
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
RemoveColumnsFromRow(oRow, iMergeBegin, iMergeEnd);
}
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//第一条记录
iPreStudentNo = iCurrentStudentNo;
iPreRowNum = oRow.RowIndex;
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Combination Columns#region Combination Columns
private void AddRowSpanForColumns(GridViewRow oRow, int iIndexOfColumnBegin, int iIndexOfColumnEnd, int iRowspan)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//给上一个相同的加上Span
for (int i = 0; i < oRow.Cells.Count; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (i < iIndexOfColumnBegin || i > iIndexOfColumnEnd)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
oRow.Cells[i].RowSpan = iRowspan;
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// 移除列,进行合并
/// </summary>
/// <param name="oRow"></param>
/// <param name="iIndexOfColumnBegin"></param>
/// <param name="iIndexOfColumnEnd"></param>
private void RemoveColumnsFromRow(TableRow oRow, int iIndexOfColumnBegin, int iIndexOfColumnEnd)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
for (int i = 0; i < oRow.Cells.Count; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (i < iIndexOfColumnBegin || i > iIndexOfColumnEnd)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
oRow.Cells.RemoveAt(i);
i--;
iIndexOfColumnBegin--;
iIndexOfColumnEnd--;
}
}
}
#endregion
-
相关阅读:
Cygwin一些设置总结!
【补题】牛客58矩阵消除【数据水的一匹,算法:二进制枚举】
【补题】牛客58E题(数学)
[补题]牛客练习56,迷宫【orz】
【补题】牛客58E题(数学)
判断两个二叉树是否相同
判断两个二叉树是否相同
利用费马小定理求逆元
[补题]牛客练习56,迷宫【orz】
【补题】牛客58矩阵消除【数据水的一匹,算法:二进制枚举】
-
原文地址:https://www.cnblogs.com/chinabc/p/1592952.html
Copyright © 2020-2023
润新知