ZC公司员工评分系统——前台排版算法
教务系统的评教系统告一段落后,又开始做ZC公司的员工评分系统,总体用时6天,下面总结一下这忙碌的6天中用到得技术上的东西。
前台具体评分界面排版,需要的算法,关键是注意边界行的效果实现。
GridView界面:
GroupCol(gvDetail, 0);//合并第一列
//GroupCol(gvDetail, 2);//合并第三列
#region //从第几行到第几行合并
int bCol = 0;
string rowText = gvDetail.Rows[0].Cells[0].Text.ToString();
for (int i = 0; i < gvDetail.Rows.Count + 1; i++)
{
if (i == gvDetail.Rows.Count)//注意边界行,因为它的规律和其他行不一样,所以单拿出来
{
GroupCol(gvDetail, 3, bCol, i);
GroupCol(gvDetail, 2, bCol, i);
return;
}
if (gvDetail.Rows[i].Cells[0].Text != rowText)
{
rowText = gvDetail.Rows[i].Cells[0].Text;
GroupCol(gvDetail, 3, bCol, i);//从第几行到第几行合并
GroupCol(gvDetail, 2, bCol, i);
bCol = i;
}
}
#endregion
#region test 简单有限数据实验
//GroupCol(gvDetail, 4, 0, 2);
//GroupCol(gvDetail, 4, 2, 4);
//GroupCol(gvDetail, 4, 4, 6);
#endregion
}
#region 合并GridView中某列相同信息的行(单元格)
/// <summary>
/// 合并GridView中某列相同信息的行(单元格)
/// </summary>
/// <param name="GridView1"></param>
/// <param name="cellNum"></param>
public static void GroupCol(GridView gridView, int cols)
{
if (gridView.Rows.Count < 1 || cols > gridView.Rows[0].Cells.Count - 1)
{
return;
}
TableCell oldTc = gridView.Rows[0].Cells[cols];
for (int i = 1; i < gridView.Rows.Count; i++)
{
TableCell tc = gridView.Rows[i].Cells[cols];
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.RowSpan == 0)
{
oldTc.RowSpan = 1;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
else
{
oldTc = tc;
}
}
}
#endregion
#region 合并单元格 合并某一列中的某些行
/// <summary>
/// 合并单元格 合并某一列中的某些行
/// </summary>
/// <param name="GridView1">GridView ID</param>
/// <param name="cellNum">列</param>
/// <param name="sRow">开始行</param>
/// <param name="eRow">结束行</param>
public static void GroupCol(GridView gridView, int cols, int sRow, int eRow)
{
if (gridView.Rows.Count < 1 || cols > gridView.Columns.Count - 1)
{
return;
}
TableCell oldTc = gridView.Rows[sRow].Cells[cols];
for (int i = 1; i < eRow - sRow; i++)
{
TableCell tc = gridView.Rows[sRow + i].Cells[cols];
tc.Visible = false;
if (oldTc.RowSpan == 0)
{
oldTc.RowSpan = 1;
}
oldTc.RowSpan++;
oldTc.VerticalAlign = VerticalAlign.Middle;
}
}
#endregion