GridView添加表頭表尾以及合并相同項

來源:互聯網
上載者:User

今天又在研究GridView想實現合并相同儲存格

後來就找了點網上例子,搜gridview通用大全,或者gridview使用大全都可以搜到

我主要用看的這個人例子http://www.cnblogs.com/huangjianhuakarl/

稍加改動,實現了自己功能,好了可以看原始碼了

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;/// <summary>/// Author:原作者匆匆  Blog:http://www.cnblogs.com/huangjianhuakarl/ 改動xy/// </summary>public partial class 表頭表尾_GridviewDelSameCell : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            bind();        }    }    /// <summary>    /// 綁定資料    /// </summary>    public void bind()    {        string sqlStr = "select * from Employee";        DataSet myds = Common.dataSet(sqlStr);        GridView1.DataSource = myds;        GridView1.DataKeyNames = new string[] { "ID" };        GridView1.DataBind();        gvRender();    }    /// <summary>    /// 在 GridView 控制項中建立新行時發生,此事件通常用於在建立某個行時修改該行的布局或外觀    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)    {        switch (e.Row.RowType)        {            //判斷是否表頭            case DataControlRowType.Header:                //第一行表頭                TableCellCollection tcHeader = e.Row.Cells;                tcHeader.Clear();                tcHeader.Add(new TableHeaderCell());                tcHeader[0].Attributes.Add("rowspan", "2");                tcHeader[0].Attributes.Add("bgcolor", "Azure");                tcHeader[0].Text = "編號";                tcHeader.Add(new TableHeaderCell());                tcHeader[1].Attributes.Add("colspan", "6");                tcHeader[1].Attributes.Add("bgcolor", "Azure");                tcHeader[1].Text = "基  本  信  息";                tcHeader.Add(new TableHeaderCell());                tcHeader[2].Attributes.Add("bgcolor", "Azure");                tcHeader[2].Text = "福利</th></tr><tr>";                //第二行表頭                tcHeader.Add(new TableHeaderCell());                tcHeader[3].Attributes.Add("bgcolor", "Azure");                tcHeader[3].Text = "帳號";                tcHeader.Add(new TableHeaderCell());                tcHeader[4].Attributes.Add("bgcolor", "Azure");                tcHeader[4].Text = "姓名";                tcHeader.Add(new TableHeaderCell());                tcHeader[5].Attributes.Add("bgcolor", "Azure");                tcHeader[5].Text = "性別";                tcHeader.Add(new TableHeaderCell());                tcHeader[6].Attributes.Add("bgcolor", "Azure");                tcHeader[6].Text = "住址";                tcHeader.Add(new TableHeaderCell());                tcHeader[7].Attributes.Add("bgcolor", "Azure");                tcHeader[7].Text = "郵編";                tcHeader.Add(new TableHeaderCell());                tcHeader[8].Attributes.Add("bgcolor", "Azure");                tcHeader[8].Text = "生日";                tcHeader.Add(new TableHeaderCell());                tcHeader[9].Attributes.Add("bgcolor", "Azure");                tcHeader[9].Text = "月薪";                break;        }    }    /// <summary>    /// 在 GridView 控制項中的某個行被綁定到一個資料記錄時發生。此事件通常用於在某個行被綁定到資料時修改該行的內容。    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)    {        foreach (TableCell tc in e.Row.Cells)        {            tc.Attributes["style"] = "border-color:Black";        }        if (e.Row.RowIndex != -1)        {            int id = GridView1.PageIndex * GridView1.PageSize + e.Row.RowIndex + 1;            e.Row.Cells[0].Text = id.ToString();        }    }    /// <summary>    /// 合并一列中的相同項    /// </summary>    private void gvRender()    {        if (GridView1.Rows.Count <= 1)        {            return;        }        for (int i = 0; i < GridView1.Columns.Count; i++)        {            TableCell oldtc = GridView1.Rows[0].Cells[i];            for (int j = 1; j < GridView1.Rows.Count; j++)            {                TableCell newtc = GridView1.Rows[j].Cells[i];                //如果相等合并,否則替換比較對象                if (newtc.Text == oldtc.Text)                {                    newtc.Visible = false;                    if (oldtc.RowSpan == 0)                    {                        oldtc.RowSpan = 1;                        oldtc.RowSpan = oldtc.RowSpan + 1;                        oldtc.VerticalAlign = VerticalAlign.Middle;                    }                    else                    {                        oldtc.RowSpan = oldtc.RowSpan + 1;                        oldtc.VerticalAlign = VerticalAlign.Middle;                    }                                    }                else                {                    oldtc = newtc;                }            }        }    }}

原表:

運行結果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.