ASP.NET 2.0中合并 GridView 的表头单元格

本文介绍如何使用 ASP.NET 中的 GridView 控件实现表头单元格的合并功能,并提供完整的前后台代码示例。通过创建自定义数据源,演示了如何设置表格结构及如何在 RowDataBound 事件中进行单元格合并。
<script type="text/javascript">google_ad_client = "pub-2048279401139630";google_ad_slot = "8856771542";google_ad_width = 728;google_ad_height = 90;document.write("<s"+"cript type='text/javascript' s"+"rc='http://pagead2.googlesyndication.com/pagead/show_ads"+"."+"js'></scr"+"ipt>");</script>

合并前效果:

合并后效果:

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testCells.aspx.cs" Inherits="testCells" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" CellPadding="4" CellSpacing="1" ForeColor="#333333" GridLines="None">
                
<Columns>
                    
<asp:BoundField HeaderText="日期" DataField="Date" />
                    
<asp:BoundField HeaderText="周次" DataField="WeekNo" />
                    
<asp:BoundField HeaderText="浏览" DataField="Visit" />
                    
<asp:BoundField HeaderText="人数" DataField="Hit" />
                    
<asp:BoundField HeaderText="浏览" DataField="Visit1" />
                    
<asp:BoundField HeaderText="人数" DataField="Hit1" />
                    
<asp:BoundField HeaderText="浏览" DataField="Visit2" />
                    
<asp:BoundField HeaderText="人数" DataField="Hit2" />
                
</Columns>
                
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                
<AlternatingRowStyle BackColor="White" />
            
</asp:GridView>
        
</div>
    
</form>
</body>
</html>

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class testCells : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            
this.GridView1.DataSource = this.CreateDataSource();
            
this.GridView1.DataBind();
        }


    }


    ICollection CreateDataSource()
    
{
        DataTable dt 
= new DataTable();
        DataColumn dc;
        DataRow dr;
        Random r 
= new Random(52);

        dc 
= new DataColumn("Date"typeof(System.DateTime));
        dc.DefaultValue 
= System.DateTime.Now.ToString("yyyy-MM-dd");
        dt.Columns.Add(dc);

        dc 
= new DataColumn("WeekNo"typeof(System.Int32));
        dt.Columns.Add(dc);

        dc 
= new DataColumn("Visit"typeof(System.Int32));
        dt.Columns.Add(dc);

        dc 
= new DataColumn("Hit"typeof(System.Int32));
        dt.Columns.Add(dc);

        dc 
= new DataColumn("Visit1"typeof(System.Int32));
        dt.Columns.Add(dc);

        dc 
= new DataColumn("Hit1"typeof(System.Int32));
        dt.Columns.Add(dc);


        dc 
= new DataColumn("Visit2"typeof(System.Int32));
        dt.Columns.Add(dc);

        dc 
= new DataColumn("Hit2"typeof(System.Int32));
        dt.Columns.Add(dc);


        
for (int i = 1; i < 100; i++)
        
{
            dr 
= dt.NewRow();

            dr[
0= System.DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");
            dr[
1= r.Next(52);

            dr[
2= r.Next(5* i;
            dr[
3= r.Next(610* i;

            dr[
4= r.Next(11* i;
            dr[
5= r.Next(1120* i;

            dr[
6= r.Next(21* i;
            dr[
7= r.Next(3140* i;

            dt.Rows.Add(dr);
        }


        
return dt.DefaultView;

    }

    
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.DataRow)
        
{
            e.Row.Cells[
0].Text = Convert.ToDateTime(e.Row.Cells[0].Text).ToString("yyyy-MM-dd");
        }


        
if (e.Row.RowType == DataControlRowType.Header)
        
{
            e.Row.Cells[
0].Text = "";

            GridViewRow gvr 
= new GridViewRow(00, DataControlRowType.Header, DataControlRowState.Normal);
            
//TableCellCollection tcc = null;
            TableCell tc =null;
            tc
= new TableCell();
            tc.ColumnSpan 
= 2;
            tc.HorizontalAlign 
= HorizontalAlign.Center;
            tc.Text 
= "";
            gvr.Cells.Add(tc);

            tc 
= new TableCell();
            tc.ColumnSpan 
= 2;
            tc.Text 
= "合并1";
            tc.HorizontalAlign 
= HorizontalAlign.Center;
            gvr.Cells.Add(tc);

            tc 
= new TableCell();
            tc.ColumnSpan 
= 2;
            tc.Text 
= "合并2";
            tc.HorizontalAlign 
= HorizontalAlign.Center;
            gvr.Cells.Add(tc);

            tc 
= new TableCell();
            tc.ColumnSpan 
= 2;
            tc.Text 
= "合并3";
            tc.HorizontalAlign 
= HorizontalAlign.Center;
            gvr.Cells.Add(tc);

          
//下面是关键,孟子的思路就是获取当前gridview的第一个控件(即表头),然后在里面加上gridviewrow控件
          
// GridView1.Controls[0].Controls.AddAt(0, gvr);//孟子的方法
         
//我的方法其实差不多,就是通过获取当前表头控件所在父控件,然后在父控件中添加gridgiewrow
           e.Row.Parent.Controls.AddAt(0, gvr);//我的方法
        }

    }

}

 
本课题设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得分析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像分析与模式分类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问题。 在色彩特征分析方面,叶片影像的颜色分布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往指示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成分等),能够提取具有判别力的色彩特征,从而为不同病害类别的区分提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理指标。此外,局部二值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与分类判断。采用的分类模型包括支持向量机、决策树等机器学习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课题设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到分类决策的流程,学生能够将理论知识与实际应用相结合,提升解决复杂工程问题的能力。总体而言,该叶片病害检测系统涵盖了图像分析、特征融合、分类算法及界面开发等多个技术环节,为学习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值