`
高成锋
  • 浏览: 52789 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

GridView 行列合并

    博客分类:
  • .NET
阅读更多

在显示报表信息的时候我们可能希望展现给页面的是如下的形式:

 

节日

移动

联通

电信

 

中秋

计划一

计划二

计划一

计划二

计划一

计划二

12

34

56

78

89

34

 

国庆

计划一

计划二

计划一

计划二

计划一

计划二

56

67

23

45

23

52

 

可是GridView控件只是单纯的绑定了数据源,并不能自动的进行行列的合并显示.

这样的话就可以通过自定义函数来实现:

 

 

 

 

前台代码:

<asp:GridView ID="GView1" runat="server" Height="1px" Width="749px" OnRowCreated="GView1_RowCreated">

</asp:GridView>

//调用自定义的GView1_RowCreated函数进行行列的合并

 

后台代码:

protected void GView1_RowCreated(object sender, GridViewRowEventArgs e)

    {

        if (e.Row.RowType == DataControlRowType.Header)     //判断是否是表的第一行

        {   // GridViewRowEventArgs e对象的定义可以获取控件行的各种相关信息

 

            GridViewRow rowHeader = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);

            rowHeader.Font.Bold = false;    //设置头行字体样式

            rowHeader.BorderStyle = BorderStyle.Dotted;   //设置头行边框及背景样式

            rowHeader.BorderColor = Color.Black;

 

           //一下新建多个单元格,也就是用户想呈现出来的头部

            TableCell headerCell = new TableCell();

            headerCell.Text = ViewState["bz"].ToString();  //此处的ViewState["bz"]是在上面绑定数据源到GridView是声明赋值过的.比如上面表格中的节日

            headerCell.ForeColor = Color.White;

            headerCell.RowSpan = 2;

            headerCell.Style.Add("width", "6%");

            rowHeader.Cells.Add(headerCell);

 

            headerCell = new TableCell();

            headerCell.Text = "移动";

            headerCell.ForeColor = Color.White;

            headerCell.ColumnSpan = 2;

            headerCell.Style.Add("width", "10%");

            headerCell.HorizontalAlign = HorizontalAlign.Center;

            rowHeader.Cells.Add(headerCell);

 

            headerCell = new TableCell();

            headerCell.Text = "联通";

            headerCell.ForeColor = Color.White;

            headerCell.ColumnSpan = 2;

            headerCell.Style.Add("width", "10%");

            headerCell.HorizontalAlign = HorizontalAlign.Center;

            rowHeader.Cells.Add(headerCell);

 

            headerCell = new TableCell();

            headerCell.Text = "电信";

            headerCell.ForeColor = Color.White;

            headerCell.ColumnSpan = 2;

            headerCell.Style.Add("width", "10%");

            headerCell.HorizontalAlign = HorizontalAlign.Center;

            rowHeader.Cells.Add(headerCell);

 

            rowHeader.Visible = true;

            GView1.Controls[0].Controls.AddAt(0, rowHeader); //将刚刚新建拼接的一行添加到控件中的第一行

            e.Row.Cells.RemoveAt(0);

            //e.Row.Cells.RemoveAt(e.Row.Cells.Count - 1);   //该行可以移除行中的某个单元格

            for (int i = 0; i < e.Row.Cells.Count; i++)   //设置各列的宽度大小

            {

                e.Row.Cells[i].Style.Add("width", "6.3%");

            }

        }

    }

 

 

 

 

在这里只是一个简单的操作,读者可以依据实现原理自由合并,具体的就不详细了,我也是一个新手,只是知识总结一下.

 

 

顺带的讲一下单元格中个性化字体的设置

前台代码:

 

<asp:GridView ID="GView1" runat="server" Height="10px"Width="749px" OnRowDataBound="Gview1_RowDataBind">

</asp:GridView>

 

后台代码:

protected void Gview1_RowDataBind(object sender,GridViewRowEventArgs e)

    {

       switch(e.Row.RowType)

       {

           case DataControlRowType.DataRow:

               if(e.Row.Cells[0].Text == "合计")

               {

                   e.Row.BackColor = ColorTranslator.FromHtml("#F47F80");

               }

               break;

           case DataControlRowType.Header:

               if(e.Row.Cells[0].Text == "地区")

               {

                   e.Row.BackColor = ColorTranslator.FromHtml("#494949");

               }

               if (e.Row.Cells[3].Text == "三网渗透率")

               {

                   //e.Row.BackColor = ColorTranslator.FromHtml("#e4e4e4");

                   e.Row.ForeColor = ColorTranslator.FromHtml("#111111");

               }

               break;

           case DataControlRowType.Footer:

               break;

       }

}

 

根据自己的需要将标题,内容,结尾等某些特殊的行或单元格中的字体和背景色什么的进行设置.

分享到:
评论

相关推荐

    wpf GridView 合并单元格 Demo

    本教程将详细解释如何在WPF的GridView中实现单元格合并,这对于创建复杂的报表或者进行数据分组展示非常有用。我们将使用Visual Studio 2017作为开发环境。 ### 1. 创建WPF项目 首先,打开Visual Studio 2017,...

    Android 实现GridView的item合并效果

    实现GridView的横向滑动,默认为纵向滑动,主要目标实现GridView中两个或多个相邻item的合并效果,满足项目的UI设计,同时解决了item选中放大被其他item遮挡的问题;用法简单,一目了然,可供参考

    GridView控件行和列的合并

    当我们在构建数据展示界面时,有时需要对GridView进行行或列的合并,以达到更美观、更有逻辑的布局效果。本文将详细介绍如何在GridView中实现行和列的合并。 首先,我们来看列的合并。在GridView中,列的合并通常...

    GridView动态创建列头丶自定义多行合并表头

    ### GridView动态创建列头与自定义多行合并表头 #### 一、概述 在Web开发中,`GridView` 控件被广泛应用于显示表格数据。它不仅提供了强大的数据绑定功能,还支持各种自定义设置,使得开发者能够根据具体需求灵活...

    Devexpress Gridcontrol 合并行,列头

    1. **行合并**:在GridControl中,可以通过设置`GridView.OptionsView.AllowRowMerge`属性为`true`来启用行合并功能。然后,通过`GridView.MergeCells(int firstVisibleColumn, int lastVisibleColumn, int firstRow...

    重写Asp.net中GridView,增加冻结窗口等多项功能

    一个多功能的GridView,在asp.net原有的GridView上增加了11个新功能,包括分组,冻结窗口,鼠标事件,复合排序,联动复选框,响应行的单击事件和双击事件,行右键菜单,自定义分页样式,合并指定列的相邻且内容相同的单元格等...

    合并table的行

    当面对大量重复或相似的数据时,合并表格行的功能可以极大地提升数据展示的清晰度和用户体验。本文将深入探讨如何实现“合并table的行”这一功能,以及其背后的原理与应用场景。 ### 合并table的行:原理与实现 在...

    DataTable合并重复行(解决方案)

    DataTable合并重复行解决方案 DataTable合并重复行是指在数据处理过程中,需要将两个或多个DataTable合并成一个DataTable,但是在合并过程中可能会出现重复行的问题。这种情况下,需要使用特殊的方法来去除重复行,...

    gridview打印的相关

    在IT行业中,GridView是一种常用的控件,特别是在Windows Forms和ASP.NET开发中,它用于显示数据集的行列形式,便于用户浏览和操作。本篇将详细探讨GridView与打印相关的知识点,尤其是如何实现连续打印。 首先,...

    自定义导出word表格的格式和内容,跨行跨列等操作

    - 合并单元格:通过“布局”选项卡的“合并单元格”功能,可以将相邻的单元格合并成一个大单元格,适用于标题或摘要。 - 拆分单元格:相反,若需要将一个单元格拆分为多个,可使用“拆分单元格”功能。 - 插入/...

    vc++网格控件

    总结来说,VC++网格控件是Windows应用开发中用于数据展示和交互的重要工具,其强大的功能如合并、添加、删除行列以及合并列等,使得它可以灵活地适应各种数据展示需求。通过学习和实践,开发者可以利用这些控件创建...

    在SQL Server中将多行合并为一行

    在ASP.NET中,可以利用GridView或DataGrid控件来显示合并后的数据。 总的来说,`PIVOT`操作在SQL Server中是一个强大的工具,可以帮助我们整理数据,使其更适合分析和展示。理解如何正确使用它,能够极大地提升数据...

    2048安卓简易实现

    在布局文件(如activity_main.xml)中,定义一个GridView,并设置合适的行列数量。可以使用自定义ViewGroup扩展GridView,以便更好地控制每个格子的行为。 三、2048游戏逻辑 1. 数组存储:使用二维数组存储棋盘上的...

    基于 flutter 开发的 2048 游戏,支持3x3 4x4 6x6三种模式

    可以自定义行列数,以适应不同模式。 3. **GestureDetector**:监听用户触摸事件,如滑动,触发棋盘的移动操作。 4. **Blocs或Provider**(可选):为了更好地管理游戏逻辑和状态,可以采用BLoC(Business Logic ...

    dev控件实现列横竖排列,一列横跨其他多列

    在开发Web应用或者桌面应用时,我们经常需要创建数据展示界面,其中表格控件是常见的选择。本主题将深入探讨如何使用Dev控件,特别是AdvBandedGridView列表控件,来实现一种特殊的布局效果——一列横跨其他多列,...

    LockTable.rar

    在Android中,标准的GridView或RecyclerView虽然能实现基本的网格布局,但它们并不直接支持复杂的表格功能,如合并单元格、冻结行列等。因此,开发者通常需要创建自定义视图来满足这些需求。自绘制表格控件允许...

    DevexpressWinform中文文档

    3. **网格视图**:葡萄城的GridView控件是其一大亮点,它提供了丰富的功能,如列排序、分页、行列选择、行编辑、行合并等,同时支持自定义模板和复杂的数据操作。 4. **报表**:DevExpress的报表组件支持创建复杂的...

    Android listView 绘制表格实例详解

    ListView上方和下方设置了分割线,以模拟表格的行列分隔效果。关键在于`&lt;include&gt;`标签,它用于引用外部的`list_item`布局,这是表格的每一行。 **2. 创建list_item布局** 在`list_item.xml`文件中,我们创建了一...

Global site tag (gtag.js) - Google Analytics