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


 

原文地址:https://www.cnblogs.com/CharmingDang/p/9663988.html