zoukankan      html  css  js  c++  java
  • GridView合并某一列相同的单元格(MS)

     一次只合并一列

            #region  合并gridview中某一列相同的单元格
            public static void CellTogether(int cellIndex, GridView gvTemp)
            {
                int i = 0;
                int rowSpanNum = 1;

                while (i < gvTemp.Rows.Count - 1)
                {
                    GridViewRow gvr = gvTemp.Rows[i];
                    for (++i; i < gvTemp.Rows.Count; i++)
                    {
                        GridViewRow gvrNext = gvTemp.Rows[i];
                        if (gvr.Cells[cellIndex].Text == gvrNext.Cells[cellIndex].Text)
                        {
                            // 前1つ列の内容が一致かどうか
                            if ((cellIndex >= 1) &&
                                (gvr.Cells[cellIndex - 1].Text != gvrNext.Cells[cellIndex - 1].Text))
                            {
                                gvr.Cells[cellIndex].RowSpan = rowSpanNum;
                                rowSpanNum = 1;
                                break;
                            }
                            else
                            {
                                gvrNext.Cells[cellIndex].Visible = false;
                                rowSpanNum++;
                            }
                        }
                        else
                        {
                            gvr.Cells[cellIndex].RowSpan = rowSpanNum;
                            rowSpanNum = 1;
                            break;
                        }
                        if (i == gvTemp.Rows.Count - 1)
                        {
                            gvr.Cells[cellIndex].RowSpan = rowSpanNum;
                        }
                    }
                }
            }

            #endregion

    使用方法

    在GRIDVIEW绑定后调用

    CellTogetherArry(列数字, GridView1);

     

    一次可以合并多列(数组)

            public static void CellTogetherArry(int[] cellIndex, GridView gvTemp)
            {
                for (int x = 0; x < cellIndex.Length; x++)
                {
                    int i = 0;
                    int rowSpanNum = 1;
                    while (i < gvTemp.Rows.Count - 1)
                    {
                        GridViewRow gvr = gvTemp.Rows[i];
                        for (++i; i < gvTemp.Rows.Count; i++)
                        {
                            GridViewRow gvrNext = gvTemp.Rows[i];
                            if (gvr.Cells[cellIndex[x]].Text == gvrNext.Cells[cellIndex[x]].Text)
                            {
                                // 前1つ列の内容が一致かどうか
                                if ((cellIndex[x] >= 1) &&
                                    (gvr.Cells[cellIndex[x] - 1].Text != gvrNext.Cells[cellIndex[x] - 1].Text))
                                {
                                    gvr.Cells[cellIndex[x]].RowSpan = rowSpanNum;
                                    rowSpanNum = 1;
                                    break;
                                }
                                else
                                {
                                    gvrNext.Cells[cellIndex[x]].Visible = false;
                                    rowSpanNum++;
                                }
                            }
                            else
                            {
                                gvr.Cells[cellIndex[x]].RowSpan = rowSpanNum;
                                rowSpanNum = 1;
                                break;
                            }
                            if (i == gvTemp.Rows.Count - 1)
                            {
                                gvr.Cells[cellIndex[x]].RowSpan = rowSpanNum;
                            }
                        }
                    }
                }
            }

     

    使用方法

    int[] arr=new int[]{1,2};

    在GRIDVIEW绑定后调用

    CellTogetherArry(arr, GridView1);

  • 相关阅读:
    如何自我介绍可以吸引面试官?
    测试用例有多重要?
    文档测试的要点是什么?
    android应用性能优化技法
    android中的ems的真正含义
    android studio的java代码中,提取普通字符串为常量
    Android配置启动页
    C/C++函数未运行,且显示Process returned -1073741571 (0xC00000FD)
    vue的组件及其使用方法
    Vue关闭ESLint
  • 原文地址:https://www.cnblogs.com/Hdsome/p/1261959.html
Copyright © 2011-2022 走看看