⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridview 合并单元格.txt

📁 guan yu pai ke xi tong de ruan jian
💻 TXT
字号:
 1 /// <summary>
 2 /// 合并GridView中某列相同信息的行(单元格) 
 3 /// </summary>
 4 /// <param name="GridView1">GridView对象</param>
 5 /// <param name="cellNum">需要合并的列</param>
 6 public static void GroupRows(GridView GridView1, int cellNum)
 7 {
 8     int i = 0, rowSpanNum = 1;
 9     while (i < GridView1.Rows.Count - 1)
10     {
11         GridViewRow gvr = GridView1.Rows[i];
12 
13         for (++i; i < GridView1.Rows.Count; i++)
14         {
15             GridViewRow gvrNext = GridView1.Rows[i];
16             if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
17             {
18                 gvrNext.Cells[cellNum].Visible = false;
19                 rowSpanNum++;
20             }
21             else
22             {
23                 gvr.Cells[cellNum].RowSpan = rowSpanNum;
24                 rowSpanNum = 1;
25                 break;
26             }
27 
28             if (i == GridView1.Rows.Count - 1)
29             {
30                 gvr.Cells[cellNum].RowSpan = rowSpanNum;
31             }
32         }
33     }
34 }

/// <summary>
/// 根据条件列合并GridView列中相同的行   
/// </summary>
/// <param name="GridView1">GridView对象</param>
/// <param name="cellNum">需要合并的列</param>
    ///   ///   条件列(根据某条件列还合并)
    public static void GroupRows(GridView GridView1, int cellNum, int cellNum2)
    {
        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 (gvr.Cells[cellNum].Text + gvr.Cells[cellNum2].Text == gvrNext.Cells[cellNum].Text + gvrNext.Cells[cellNum2].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;
                }
            }   
	}
    } 



1        合并多列#region 合并多列
2        /**//// <summary>
3        /// GridView合并
4        /// </summary>
5        /// <param name="gdv">GridView</param>
6        /// <param name="startColumnIndex">起始列Index</param>
7        /// <param name="endColumnIndex">结束列Index</param>
8        public static void MergeGridViewRows(GridView gdv, int startColumnIndex, int endColumnIndex)
9        {
10            if (gdv == null || endColumnIndex < startColumnIndex || gdv.Rows.Count < 2)
11                return;
12            if (startColumnIndex < 0 || endColumnIndex > gdv.Columns.Count - 1)
13                throw new ArgumentOutOfRangeException("列Index超出GridView可用列的范围。");
14             EndColumnIndex = endColumnIndex;
15             MergeCellWithSubColumn(gdv, 0, 0, gdv.Rows.Count - 1);
16         }
17        private static int EndColumnIndex = 0;
18
19        /**//// <summary>
20        /// 合并当前列和后续列
21        /// </summary>
22        /// <param name="currentColumnIndex">当前列</param>
23        /// <param name="startRowIndex">起始行</param>
24        /// <param name="endRowIndex">结束行</param>
25        /// <summary>
26        private static void MergeCellWithSubColumn(GridView gdv, int currentColumnIndex, int startRowIndex, int endRowIndex)
27        {
28            if (currentColumnIndex > EndColumnIndex)//结束递归
29                return;
30            string preValue = GetCellValue(gdv,startRowIndex, currentColumnIndex);
31            string curValue = string.Empty;
32            int endIndex = startRowIndex;
33            for (int i = startRowIndex + 1; i <= endRowIndex + 1; i++)
34            {
35                if (i == endRowIndex + 1)
36                     curValue = null;//完成最后一次合并
37                else
38                     curValue = GetCellValue(gdv, i, currentColumnIndex);
39                if (curValue != preValue)
40                {
41                    //合并当前列
42                     MergeColumnCell(gdv, currentColumnIndex, endIndex, i - 1);
43                    //合并后续列
44                     MergeCellWithSubColumn(gdv, currentColumnIndex + 1, endIndex, i - 1);
45                     endIndex = i;
46                     preValue = curValue;
47                 }
48             }
49         }







ASP.NET 2.0 GridView控件导出数据到Excel
较为完整的代码说明:
1.导出执行前必须将GridView控件的排序、分页功能去掉,导出成功后再设置回来
2.public override void VerifyRenderingInServerForm(Control control) 必须重载,确保控件被加载到
  Form中,否则执行到  ctl.RenderControl(hw)这一行 时会出错。
 
protected void Button1_Click(object sender, EventArgs e)
    {
        GridView1.AllowPaging = false;
        GridView1.AllowSorting = false;
        GridView1.DataBind();
        ToExcel(GridView1, TextBox1.Text.Trim());
        GridView1.AllowPaging = true;
        GridView1.AllowSorting = true;
        GridView1.DataBind();
    }
 
 
    public static void ToExcel(Control ctl, string FileName)
    {
        HttpContext.Current.Response.Charset = "GB2312";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName + ".xls");
        ctl.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {
        // Confirms that an HtmlForm control is rendered for
    } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -