当前位置:编程学习 > C#/ASP.NET >>

DataGridView 合并

DataGridView 行合并和列合并谁在例子? --------------------编程问答-------------------- 什么样的合并结果? --------------------编程问答-------------------- 行合并,就是把DataGridview2没一行添加到DataGridView1中就是了,一个循环不就搞定了?
列合并要麻烦点,先用.Columns.Add 添加列,然后再修改行的值就是了。 --------------------编程问答-------------------- 先写给你合并的代码

        For i As Integer = 1 To DataGridView2.Rows.Count
            Dim r As DataGridViewRow
            r = DataGridView2.Rows(0)
            DataGridView2.Rows.Remove(r)

            DataGridView1.Rows.AddRange(r)
        Next i
--------------------编程问答-------------------- 上面是行合并,列合并,我试试看,== --------------------编程问答-------------------- 列合并的代码

        For i As Integer = 1 To DataGridView2.Columns.Count
            Dim c As DataGridViewColumn
            c = DataGridView2.Columns(i - 1)
            DataGridView1.Columns.Add(c.Name, c.HeaderText)
            For j As Integer = 1 To DataGridView2.Rows.Count
                DataGridView1.Rows(j - 1).Cells(DataGridView2.Columns.Count + i - 1).Value = DataGridView2.Rows(j - 1).Cells(i - 1).Value
            Next
        Next
--------------------编程问答-------------------- 我測試你的行合并了,你的代易做图不對啊!
DataGridView2.Rows.Remove(r)
測試通不過啊! --------------------编程问答-------------------- 如果你是2003有可能通不过,那你就一个单元一个单元添加,这是2005中测试通过的代码,合并行就是循环一次,添加一下就完了,自己写也很简单,而且合并列的代码稍微改一下就是合并行的了。 --------------------编程问答-------------------- 像这样的图 --------------------编程问答-------------------- llsus我用VB2005測試你的代易做图也是實現不了樓主的要求。 --------------------编程问答-------------------- http://www.cnblogs.com/wxj1020/archive/2008/03/17/1109680.html
樓主參考一下。 --------------------编程问答-------------------- 这个控件功能这么强就是不提供直接使用合并 --------------------编程问答-------------------- 列单元格合并.这里给出了具体的思路,你修改下估计能行了,行也是一样的道理,对多列就是作个循环

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)

        {

            // 对第1列相同单元格进行合并

            if (e.ColumnIndex == 0 && e.RowIndex != -1)

            {

                using

                    (

                    Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor),

                    backColorBrush = new SolidBrush(e.CellStyle.BackColor)

                    )

                {

                    using (Pen gridLinePen = new Pen(gridBrush))

                    {

                        // 清除单元格

                        e.Graphics.FillRectangle(backColorBrush, e.CellBounds);

                        // 画 Grid 边线(仅画单元格的底边线和右边线)

                        //   如果下一行和当前行的数据不同,则在当前的单元格画一条底边线

                        if (e.RowIndex < dataGridView1.Rows.Count - 1 &&

                        dataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString() != 

                        e.Value.ToString())

                            e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,

                            e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,

                            e.CellBounds.Bottom - 1);

                        // 画右边线

                        e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,

                            e.CellBounds.Top, e.CellBounds.Right - 1,

                            e.CellBounds.Bottom);

                        // 画(填写)单元格内容,相同的内容的单元格只填写第一个

                        if (e.Value != null)

                        {

                            if (e.RowIndex > 0 &&

                            dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString() == 

                            e.Value.ToString())

                            { }

                            else

                            {

                                e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,

                                    Brushes.Black, e.CellBounds.X + 2,

                                    e.CellBounds.Y + 5, StringFormat.GenericDefault);

                            }

                        }

                        e.Handled = true;

                    }

                }

            }

        }


--------------------编程问答-------------------- 关注。 --------------------编程问答-------------------- llsus 楼主可否发个更详细一点代码.我试了无法达到你发的图片的效果. --------------------编程问答-------------------- 關注 --------------------编程问答-------------------- For i As Integer = 1 To DataGridView2.Rows.Count
            Dim r As DataGridViewRow
            r = DataGridView2.Rows(0)
            DataGridView2.Rows.Remove(r)

            DataGridView1.Rows.AddRange(r)
        Next i

--------------------编程问答--------------------
引用 14 楼 li_qiang_sc 的回复:
llsus 楼主可否发个更详细一点代码.我试了无法达到你发的图片的效果.


晕,我理解错你的意思了。 --------------------编程问答-------------------- 楼主说的我不会。
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,