怎样在gridview里合并单元格?

解决方案 »

  1.   

    在GridView_RowCreated上作文章。这可能是老办法了。我简单做了个测试。
    效果:点击
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" onrowcreated="GridView1_RowCreated">
            </asp:GridView>
        </div>
    </form>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
                GridView1.DataSource = GetTable();
                GridView1.DataBind();
        }
    }private DataTable GetTable()
    {
            DataTable dt = new DataTable();        DataColumn dc = new DataColumn();
            dc.ColumnName = "ID";
            dc.AutoIncrement = true;
            dc.AutoIncrementSeed = 1;
            dc.AutoIncrementStep = 1;        dt.Columns.Add(dc);
            dt.PrimaryKey = new DataColumn[] { dc };        dt.Columns.Add("FirstName", typeof(string));
            dt.Columns.Add("LastName", typeof(string));        dt.Columns.Add("City", typeof(string));
            dt.Columns.Add("Street", typeof(string));        DataRow dr = dt.NewRow();
            dr["FirstName"] = "元甲";
            dr["LastName"] = "霍";
            dr["City"] = "上海";
            dr["Street"] = "南京路325号";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["FirstName"] = "真";
            dr["LastName"] = "陈";
            dr["City"] = "佛山";
            dr["Street"] = "东山路15号";
            dt.Rows.Add(dr);        return dt;}
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
            if (e.Row.RowType == DataControlRowType.Header)
            {
                // 第一行表头
                TableCellCollection tcHeader = e.Row.Cells;
                tcHeader.Clear();
                tcHeader.Add(new TableHeaderCell());
                tcHeader[0].Attributes.Add("rowspan", "3"); //跨三行。
                tcHeader[0].Text = "人员ID";            tcHeader.Add(new TableHeaderCell());
                tcHeader[1].Attributes.Add("colspan", "4"); //跨四列
                tcHeader[1].Text = "基本资料</th></tr><tr>"; // 作弊            // 第二行表头
                tcHeader.Add(new TableHeaderCell());
                tcHeader[2].Attributes.Add("colspan", "2");
                tcHeader[2].Text = "姓名";
                
                tcHeader.Add(new TableHeaderCell());
                tcHeader[3].Attributes.Add("colspan", "2");            
                tcHeader[3].Text = "联系方式</th></tr><tr>"; //作弊            // 第三行表头
                tcHeader.Add(new TableHeaderCell());
                tcHeader[4].Text = "名";            tcHeader.Add(new TableHeaderCell());
                tcHeader[5].Text = "姓";            tcHeader.Add(new TableHeaderCell());
                tcHeader[6].Text = "城市";            tcHeader.Add(new TableHeaderCell());
                tcHeader[7].Text = "街道";
                
                        }
    }