在显示报表信息的时候我们可能希望展现给页面的是如下的形式:
节日
|
移动
|
联通
|
电信
|
中秋
|
计划一
|
计划二
|
计划一
|
计划二
|
计划一
|
计划二
|
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中实现单元格合并,这对于创建复杂的报表或者进行数据分组展示非常有用。我们将使用Visual Studio 2017作为开发环境。 ### 1. 创建WPF项目 首先,打开Visual Studio 2017,...
实现GridView的横向滑动,默认为纵向滑动,主要目标实现GridView中两个或多个相邻item的合并效果,满足项目的UI设计,同时解决了item选中放大被其他item遮挡的问题;用法简单,一目了然,可供参考
当我们在构建数据展示界面时,有时需要对GridView进行行或列的合并,以达到更美观、更有逻辑的布局效果。本文将详细介绍如何在GridView中实现行和列的合并。 首先,我们来看列的合并。在GridView中,列的合并通常...
### GridView动态创建列头与自定义多行合并表头 #### 一、概述 在Web开发中,`GridView` 控件被广泛应用于显示表格数据。它不仅提供了强大的数据绑定功能,还支持各种自定义设置,使得开发者能够根据具体需求灵活...
1. **行合并**:在GridControl中,可以通过设置`GridView.OptionsView.AllowRowMerge`属性为`true`来启用行合并功能。然后,通过`GridView.MergeCells(int firstVisibleColumn, int lastVisibleColumn, int firstRow...
一个多功能的GridView,在asp.net原有的GridView上增加了11个新功能,包括分组,冻结窗口,鼠标事件,复合排序,联动复选框,响应行的单击事件和双击事件,行右键菜单,自定义分页样式,合并指定列的相邻且内容相同的单元格等...
当面对大量重复或相似的数据时,合并表格行的功能可以极大地提升数据展示的清晰度和用户体验。本文将深入探讨如何实现“合并table的行”这一功能,以及其背后的原理与应用场景。 ### 合并table的行:原理与实现 在...
DataTable合并重复行解决方案 DataTable合并重复行是指在数据处理过程中,需要将两个或多个DataTable合并成一个DataTable,但是在合并过程中可能会出现重复行的问题。这种情况下,需要使用特殊的方法来去除重复行,...
在IT行业中,GridView是一种常用的控件,特别是在Windows Forms和ASP.NET开发中,它用于显示数据集的行列形式,便于用户浏览和操作。本篇将详细探讨GridView与打印相关的知识点,尤其是如何实现连续打印。 首先,...
- 合并单元格:通过“布局”选项卡的“合并单元格”功能,可以将相邻的单元格合并成一个大单元格,适用于标题或摘要。 - 拆分单元格:相反,若需要将一个单元格拆分为多个,可使用“拆分单元格”功能。 - 插入/...
总结来说,VC++网格控件是Windows应用开发中用于数据展示和交互的重要工具,其强大的功能如合并、添加、删除行列以及合并列等,使得它可以灵活地适应各种数据展示需求。通过学习和实践,开发者可以利用这些控件创建...
在ASP.NET中,可以利用GridView或DataGrid控件来显示合并后的数据。 总的来说,`PIVOT`操作在SQL Server中是一个强大的工具,可以帮助我们整理数据,使其更适合分析和展示。理解如何正确使用它,能够极大地提升数据...
在布局文件(如activity_main.xml)中,定义一个GridView,并设置合适的行列数量。可以使用自定义ViewGroup扩展GridView,以便更好地控制每个格子的行为。 三、2048游戏逻辑 1. 数组存储:使用二维数组存储棋盘上的...
可以自定义行列数,以适应不同模式。 3. **GestureDetector**:监听用户触摸事件,如滑动,触发棋盘的移动操作。 4. **Blocs或Provider**(可选):为了更好地管理游戏逻辑和状态,可以采用BLoC(Business Logic ...
在开发Web应用或者桌面应用时,我们经常需要创建数据展示界面,其中表格控件是常见的选择。本主题将深入探讨如何使用Dev控件,特别是AdvBandedGridView列表控件,来实现一种特殊的布局效果——一列横跨其他多列,...
在Android中,标准的GridView或RecyclerView虽然能实现基本的网格布局,但它们并不直接支持复杂的表格功能,如合并单元格、冻结行列等。因此,开发者通常需要创建自定义视图来满足这些需求。自绘制表格控件允许...
3. **网格视图**:葡萄城的GridView控件是其一大亮点,它提供了丰富的功能,如列排序、分页、行列选择、行编辑、行合并等,同时支持自定义模板和复杂的数据操作。 4. **报表**:DevExpress的报表组件支持创建复杂的...
ListView上方和下方设置了分割线,以模拟表格的行列分隔效果。关键在于`<include>`标签,它用于引用外部的`list_item`布局,这是表格的每一行。 **2. 创建list_item布局** 在`list_item.xml`文件中,我们创建了一...