溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

GridView合并單元格萬能版(包括模板列)

發(fā)布時(shí)間:2020-07-23 14:12:41 來源:網(wǎng)絡(luò) 閱讀:1593 作者:l29550242 欄目:開發(fā)技術(shù)

今天修改舊的項(xiàng)目,發(fā)現(xiàn)之前用到的gridview合并單元格代碼不適用于模板列。做了修改之后記錄下來。
兩種方法,第一種適用于所有情況,第二種適用于合并依據(jù)列非模板列。
兩種方法如下:
方法一:

    /// <summary>
    /// 合并GridView中某列相同信息的行(單元格)   包含模板列  根據(jù)ID=rowspanid 的hiddenfield控件的值來合并。需要合并的 單元格需加上這個(gè)控件。根據(jù)控件值合并。可以將控件放在某一列,也可以放在每一列。取值的時(shí)候分開就行。此方法適合任意列,特別是模板列 無法取cell.text的時(shí)候
    /// </summary>
    /// <param name="GridView1">GridView</param>
    /// <param name="cellNums">合并第幾列</param>
    /// <param name="rowspanid">合并依據(jù)控件ID,這里用的hiddenfield控件。只需將ID=rowspanid的hiddenfield控件放在單元格里即可</param>
    public static void GroupRows(GridView GridView1, int[] cellNums, string rowspanid = "hfrowspan")
    {
        foreach (int cellNum in cellNums)
        {
            int i = 0, rowSpanNum = 1;

            while (i < GridView1.Rows.Count - 1)
            {
                GridViewRow gvr = GridView1.Rows[i];

                for (++i; i < GridView1.Rows.Count; i++)
                {
                    GridViewRow gvrNext = GridView1.Rows[i];
                    if (((HiddenField)gvr.Cells[cellNum].FindControl(rowspanid)).Value == ((HiddenField)gvrNext.Cells[cellNum].FindControl(rowspanid)).Value)
                    {
                        gvrNext.Cells[cellNum].Visible = false;
                        rowSpanNum++;
                    }
                    else
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                        rowSpanNum = 1;
                        break;
                    }

                    if (i == GridView1.Rows.Count - 1)
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                    }
                }
            }

        }
    }

方法二:

  /// <summary>
    /// 根據(jù)某一列合并其他列。依據(jù)的列不能是模板列,否則請用上一個(gè)方法↑。
    /// </summary>
    /// <param name="GridView1">GridView</param>
    /// <param name="cellNums">合并第幾列,數(shù)組</param>
    /// <param name="byCellNum">依據(jù)第幾列</param>
    public static void GroupRowsByOne(GridView GridView1, int[] cellNums, int byCellNum)
    {
        foreach (int cellNum in cellNums)
        {
            int i = 0, rowSpanNum = 1;

            while (i < GridView1.Rows.Count - 1)
            {
                GridViewRow gvr = GridView1.Rows[i];

                for (++i; i < GridView1.Rows.Count; i++)
                {
                    GridViewRow gvrNext = GridView1.Rows[i];
                    //if (((HiddenField)gvr.Cells[cellNum].FindControl(rowspanid)).Value == ((HiddenField)gvrNext.Cells[cellNum].FindControl(rowspanid)).Value)
                    if(gvr.Cells[byCellNum].Text== gvrNext.Cells[byCellNum].Text)
                    {
                        gvrNext.Cells[cellNum].Visible = false;
                        rowSpanNum++;
                    }
                    else
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                        rowSpanNum = 1;
                        break;
                    }

                    if (i == GridView1.Rows.Count - 1)
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                    }
                }
            }

        }
    }
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI