C#的控件DataGridView能否实现合并单元格,类似Excel样式?

解决方案 »

  1.   

    没有试过可不可以,不过应该可以这样试下
    先保存datagridview的数据到一个表;
    然后判断用户的选中列;
    然后把选中列全部不显示出来,显示其他的列就行了吧。
      

  2.   

    我感觉这个应该和spread一样吧,我spread合并就可以for(int i = 0 ; i < 10 ; i++)
    {
        this.fpSpread1_Sheet1.Cells.Get(i*3, 0).ColumnSpan = 2;
        this.fpSpread1_Sheet1.Cells.Get(i*3, 0).RowSpan = 2;
    }看看是不是和你的是一样的。我这个是循环合并的。
      

  3.   

    要重写DataGridView的CellPainting函数,参考:《Windows Forms 2.0数据绑定》书中的介绍,或上网找
      

  4.   

     public static void MRows(GridView GridView1, int cellNum)
        {
            int i = 0, rowSpanNum = 1;
            while (i < GridView1.Rows.Count - 1)
            {
                GridViewRow gvr = GridView1.Rows[i];
                for (++i; i < GridView1.Rows.Count; i++)
                {
                    GridViewRow gvrNext = GridView1.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 == GridView1.Rows.Count - 1)
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                    }
                }
            }
        } 
        ///   根据条件列合并GridView列中相同的行   
           public static void MRows(GridView GridView1, int cellNum, int cellNum2)
        {
            int i = 0, rowSpanNum = 1;
            while (i < GridView1.Rows.Count - 1)
            {
                GridViewRow gvr = GridView1.Rows[i];
                for (++i; i < GridView1.Rows.Count; i++)
                {
                    GridViewRow gvrNext = GridView1.Rows[i];
                    if (gvr.Cells[cellNum].Text + gvr.Cells[cellNum2].Text == gvrNext.Cells[cellNum].Text + gvrNext.Cells[cellNum2].Text)
                    {
                        gvrNext.Cells[cellNum].Visible = false;
                        rowSpanNum++;
                    }
                    else
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                        rowSpanNum = 1;
                        break;
                    }                 if (i == GridView1.Rows.Count - 1)
                    {
                        gvr.Cells[cellNum].RowSpan = rowSpanNum;
                    }
                }
            }
        }   
      

  5.   

    在c# vs 2005的winform里,合并DataGridView单元格等
      

  6.   

    ding........................................................