我用gridview显示数据库里的3列数据1 第一行 2006
2 第二行 2006
--------------
4 的三行 2007
5 的三行 2007
6 的三行 2007
--------------
7 的三行 2008
8 的三行 2008我希望当第3列的数字不一样时,就在他们之间插入一行,进行分隔,插入一行线也行,插入一行文字,也行总之就是把不同数字的上下行区分开来,请问应该如何实现呢?谢谢

解决方案 »

  1.   

    我的思路
    在Render前操作(或类似的名字,就是在显示前)
    循环,从第二行开始,判断与前面一行数字是否相同,不相同就加一个空行,直至循环结束
      

  2.   

    我觉得可以这样:对Datastable数据进行遍历,遇到与上行数据不同的就在该行前加一格空row
      

  3.   

    GridView1_RowDataBound动态创建GridViewRow,让后GridView.Controls[0].Controls.Add同时保存dataitem,用于下次RowDataBound比较
      

  4.   

    看到一些论坛中的置顶帖子和普通帖子间总有一个分隔行来实现隔离,怎样在asp.net2.0的GridView中实现呢?
    我在网上找到这样的代码,可是不知道怎么用呢,谁能告诉我一下?
    以下是我找到的代码:           //创建一个GridView的一个分隔行(根据DataControlRowType来设置)
            GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.Separator, DataControlRowState.Normal);
            //或实现一个数据行
            //GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
            //设置行的底色
            rowSeparator.BackColor = System.Drawing.Color.White;
            //设置单元格集
            //可以根据实际情况设置,我在这儿是根据RowDataBound事件(e参数)来设置的
            TableCellCollection cells = e.Row.Cells;
            //设置单元格,根据实际情况增加,我这儿是增加一个跨所有列的行
            TableCell separatorCell = new TableCell();
            //根据GridView的第一列的显示情况设置单元格和跨列数
            if (gvMain.Columns[0].Visible == true)
            {
                separatorCell.ColumnSpan = cells.Count;
            }
            else
            {
                separatorCell.ColumnSpan = cells.Count - 1;
            }
            //单元格的对齐
            separatorCell.HorizontalAlign = HorizontalAlign.Right;
            //单元格的背景色
            separatorCell.BackColor = System.Drawing.Color.FromArgb(226, 226, 226);
            //单元格的高度
            separatorCell.ControlStyle.Height = 5;
            //在单元格集中增加单元格控件
            rowSeparator.Cells.Add(separatorCell);
            //设置GridView行的可见性
            rowSeparator.Visible = true;
            //在GridView中的相应行插入行
            gvMain.Controls[0].Controls.AddAt(e.Row.RowIndex + 1, rowSeparator);请问以上的代码应该用到哪里呢?怎么使用,才能获得我想得到的效果,谢谢~
      

  5.   

    在RowDataBound事件中应用此代码,大概思路如下定义一个存储当前值的public变量 ff ,在RowDataBound事件中,如果ff!=当前行对应的数值,并且不定于初始值,则插入一个分隔行
      

  6.   

    还是没有将插入行试验成功,不过最后自己还是通过这样的方法实现了分割,对比之后用Row样式进行分隔,代码上容易理解很多,只是灵活性较差,不过性价比还是不错滴,呵呵public string ff = "00";
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex >= 0)
            {
                if (e.Row.Cells[3].Text != ff)
                {
                    e.Row.Attributes.Add("style", "border-top:1px Dashed blue");   
                    ff = e.Row.Cells[3].Text;
                }
            }
        }