单元格跨行合并,单元格跨列合并

来源:互联网 发布:积分兑换源码 编辑:程序博客网 时间:2024/05/17 07:55

protected voidGridView1_OnRowCreated(object sender, GridViewRowEventArgs e)

    {

        if (e.Row.RowType == DataControlRowType.Header)   //判断创建的行是不是标题行

        {   

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

            rowHeader.Font.Bold = true;//设置标题行的背景颜色,以及字体样式     

            e.Row.Attributes.Add("style","background-image:url('../image/right_bg2.jpg')");

            TableCellCollection cells =e.Row.Cells;

            cells.Clear();  //获得标题行,清空标题行的设置    

            cells.Add(new TableHeaderCell());  //添加一个标题单元

            cells[0].ColumnSpan = 1;

            cells[0].RowSpan = 2;   //设置跨行.

            //设置跨行. 

            cells[0].Text = "检测日期</th><th colspan=2>名称</th><thcolspan=2>二氧化硫</th><th colspan=2>颗粒物</th><th colspan=2>氮氧化合物</th><thRowSpan=2>备注</th></tr><tr style=\"background-image:url('../image/right_bg2.jpg')\"><th>公司</th><th>分厂</th><th>最大值</th><th>超标次数</th><th>最大值</th><th>超标次数</th><th>最大值</th><th>超标次数";

          //序号<th RowSpan=2>占两行 <th colspan=2>占两列

        }

        if (e.Row.RowType == DataControlRowType.DataRow)

        {

            e.Row.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#eafcd5'");

            //变量c用与存储鼠标移动在行上时,原来的背景色,然后设置为'#CCCCCC'

            e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=c");

            //当鼠标离开时,还原背景色

        }

    }

  

//#region 合并单元格 合并某一列中的某些行

    ///// <summary>
    ///// 合并单元格 合并某一列中的某些行
    ///// </summary>
    ///// <param name="GridView1">GridView ID</param>
    ///// <param name="cellNum">列</param>
    ///// <param name="sRow">开始行</param>
    ///// <param name="eRow">结束列</param>
    //public static void GroupCol1(GridView GridView1, int cols, int sRow, int eRow)
    //{
    //    if (GridView1.Rows.Count < 1 || cols > GridView1.Columns.Count - 1)
    //    {
    //        return;
    //    }
    //    TableCell oldTc = GridView1.Rows[sRow].Cells[cols];
    //    for (int i = 1; i < eRow - sRow; i++)
    //    {
    //        TableCell tc = GridView1.Rows[sRow + i].Cells[cols];
    //        tc.Visible = false;
    //        if (oldTc.RowSpan == 0)
    //        {
    //            oldTc.RowSpan = 1;
    //        }
    //        oldTc.RowSpan++;
    //        oldTc.VerticalAlign = VerticalAlign.Middle;
    //    }
    //}

    //#endregion

    #region 合并单元格 合并某一列所有行
    /// <summary>
    /// 合并GridView中某列相同信息的行(单元格)
    /// </summary>
    /// <param name="GridView1"></param>
    /// <param name="cellNum"></param>
    public static void GroupCol(GridView GridView1, int cols)
    {
        if (GridView1.Rows.Count < 1 || cols > GridView1.Rows[0].Cells.Count - 1)
        {
            return;
        }
        TableCell oldTc = GridView1.Rows[0].Cells[cols];
        for (int i = 1; i < GridView1.Rows.Count; i++)
        {
            TableCell tc = GridView1.Rows[i].Cells[cols];
            if (oldTc.Text == tc.Text)
            {
                tc.Visible = false;
                if (oldTc.RowSpan == 0)
                {
                    oldTc.RowSpan = 1;
                }
                oldTc.RowSpan++;
                oldTc.VerticalAlign = VerticalAlign.Middle;
            }
            else
            {
                oldTc = tc;
            }
        }
    }
    #endregion

0 0
原创粉丝点击