我拿到一个这样的需求,我暂且叫它分层gridview吧,如下:
id      name      order     product
 1      wang      od_1      pen
                            paper
                  od_2      car
 2      zhan      od_1      mouse
                            shoeswang下面有两个订单od_1和od_2,而od_1下又有两个产品pen和paper,od_2下有一个产品car,这是一个层结构,或者叫多叉树结构,现在需要用gridview显示出来,请问有什么好的方法显示出这样的结构,我想到的是嵌套gridview,不过貌似很麻烦的

解决方案 »

  1.   

    gridview的灵活性不够,自己输出一个table吧,解决你上述问题,小case了
      

  2.   

    呵呵,也只能你说的那样!要不就嵌套reapter,或datalist,你随便的,呵呵
    不是很麻烦!只要把传值弄明白了,就解决了
      

  3.   

    建议LZ使用Reapter来实现,这样比较容易,不用考虑很多,当然从数据结构上看,应该是Reapter嵌套
      

  4.   

    Repeater 嵌套 也可以实现哦!
      

  5.   

    gridview嵌套repeater;repeater嵌套repeater,
    拼table~
    都说过了。
      

  6.   

    1. 合并GridView当前有相同的CELL;
    2. GridView嵌套GridView;可以按需求确定嵌套层数;
      

  7.   

    呵呵,问题搞定了,用的是合并cell方法,如下        public static void GroupRows(GridView _gv, int cellNum)
            {
                int i = 0, rowSpanNum = 1;
                while (i < _gv.Rows.Count - 1)
                {
                    GridViewRow gvr = _gv.Rows[i];
                    for (++i; i < _gv.Rows.Count; i++)
                    {
                        GridViewRow gvrNext = _gv.Rows[i];
                        if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                        {
                            gvrNext.Cells[cellNum].Visible = false;
                            rowSpanNum++;
                        }
                        else
                        {
                            gvr.Cells[cellNum].RowSpan = rowSpanNum;
                            rowSpanNum = 1;
                            break;
                        }                    if (i == _gv.Rows.Count - 1)
                        {
                            gvr.Cells[cellNum].RowSpan = rowSpanNum;
                        }
                    }
                }
            }
    使用如下,在绑定后调用该函数,cellNum是列编号,支不支持动态生成列就不知道了            gv.DataBind();            GroupRows(gv, 0);
                GroupRows(gv, 1);