示例#1
0
        /// <summary>
        /// GridView合併行,
        /// </summary>
        /// <param name="gv">GridView</param>
        /// <param name="startCol">開始列</param>
        /// <param name="endCol">結束列</param>
        public static void MergeRow(GridView gv, int startCol, int endCol)
        {
            RowArg init = new RowArg()
            {
                StartRowIndex = 0,
                EndRowIndex   = gv.Rows.Count - 2
            };

            for (int i = startCol; i < endCol + 1; i++)
            {
                if (i > 0)
                {
                    List <RowArg> list = new List <RowArg>();
                    //從第二列開始就要遍歷前一列
                    TraversesPrevCol(gv, i - 1, list);
                    foreach (var item in list)
                    {
                        MergeRow(gv, i, item.StartRowIndex, item.EndRowIndex);
                    }
                }
                else //合併開始列的行
                {
                    MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex);
                }
            }
        }
示例#2
0
        /// <summary>

        /// Traverse previous Column

        /// </summary>

        /// <param name="gv">GridView</param>

        /// <param name="prevCol">The previous column of current column</param>

        /// <param name="list"></param>

        private static void TraversesPrevCol(GridView gv, int prevCol, List <RowArg> list)

        {
            if (list == null)

            {
                list = new List <RowArg>();
            }

            RowArg ra = null;

            for (int i = 0; i < gv.Rows.Count; i++)

            {
                if (!gv.Rows[i].Cells[prevCol].Visible)

                {
                    continue;
                }

                ra = new RowArg();

                ra.StartRowIndex = gv.Rows[i].RowIndex;

                ra.EndRowIndex = ra.StartRowIndex + gv.Rows[i].Cells[prevCol].RowSpan - 2;

                list.Add(ra);
            }
        }
示例#3
0
        /// <summary>
        /// 合并GridView单元格
        /// </summary>
        /// <param name="gv">要合并的GridView</param>
        /// <param name="cols">制定的列</param>
        public static void MergeRow(GridView gv, params int[] cols)
        {
            if (cols.Any(t => t < 0))
            {
                throw new ArgumentOutOfRangeException("参数中不能包含小于0列");
            }
            var init = new RowArg()
            {
                StartRowIndex = 0,
                EndRowIndex   = gv.Rows.Count - 2
            };

            for (int i = 0; i < cols.Length; i++)
            {
                if (i > 0)
                {
                    var list = new List <RowArg>();
                    //从第二列开始就要遍历前一列
                    IteratePrevCol(gv, cols[i - 1], list);
                    foreach (var item in list)
                    {
                        MergeRow(gv, cols[i], item.StartRowIndex, item.EndRowIndex);
                    }
                }
                //合并开始列的行
                else
                {
                    MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex);
                }
            }
        }
示例#4
0
文件: MergGridRow.cs 项目: PGIMES/MES
    /// <summary>
    /// 合并GridView单元格
    /// </summary>
    /// <param name="gv">要合并的GridView</param>
    /// <param name="cols">指定的列,要按照顺序传入</param>
    public static void MergeRow(GridView gv, params int[] cols)
    {
        RowArg init = new RowArg()
        {
            StartRowIndex = 0,
            EndRowIndex   = gv.Rows.Count - 2
        };

        for (int i = 0; i < cols.Length; i++)
        {
            if (i > 0)
            {
                List <RowArg> list = new List <RowArg>();
                //从第二列开始就要遍历前一列
                TraversesPrevCol(gv, cols[i - 1], list);
                foreach (var item in list)
                {
                    MergeRow(gv, cols[i], item.StartRowIndex, item.EndRowIndex);
                }
            }
            //合并开始列的行
            else
            {
                MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex);
            }
        }
    }
示例#5
0
        /// <summary>
        /// GridView合并行
        /// </summary>
        /// <param name="gv">GridView</param>
        /// <param name="startCol">开始列(索引从0开始)</param>
        /// <param name="endCol">结束列</param>
        public static void MergeRow(GridView gv, int startCol, int endCol)
        {
            if (startCol < 0)
            {
                throw new ArgumentOutOfRangeException("startCol", "开始列不能小于0");
            }
            if (endCol < 0)
            {
                throw new ArgumentOutOfRangeException("endCol", "结束列不能小于0");
            }
            if (startCol > endCol)
            {
                throw new ArgumentException("开始列不能小于结束列");
            }

            var init = new RowArg()
            {
                StartRowIndex = 0,
                EndRowIndex   = gv.Rows.Count - 2
            };

            for (int i = startCol; i < endCol + 1; i++)
            {
                if (i > 0)
                {
                    var list = new List <RowArg>();
                    //从第二列开始就要遍历前一列
                    IteratePrevCol(gv, i - 1, list);
                    foreach (var item in list)
                    {
                        MergeRow(gv, i, item.StartRowIndex, item.EndRowIndex);
                    }
                }
                //合并开始列的行
                else
                {
                    MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex);
                }
            }
        }