Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Merge column header trong DataGridView bằng C#?

  1. #1
    Ngày gia nhập
    06 2011
    Bài viết
    30

    Mặc định Merge column header trong DataGridView bằng C#?

    làm sao để có thể tạo tiêu đề trong datagrigview như hình.và một ý nữa mình muốn hỏi là nếu như mình export ra file Excel mà muốn giữ định dạng như vậy thì làm sao.

  2. #2
    Ngày gia nhập
    06 2009
    Nơi ở
    Cái hộp
    Bài viết
    1,255

    Bạn thử dùng phuơng thức Paint, CellPaint của DataGridView để vẽ lại các header này, chỉ là hiển thị chứ ko thay đổi gì đến cấu trúc của dataGridView
    Men talk of killing time, while time quietly kills them.
    Time is what we want most, but what we use worst.
    ------------------------------
    YinYang's Programming Blog

  3. #3
    Ngày gia nhập
    06 2011
    Bài viết
    30

    Trích dẫn Nguyên bản được gửi bởi Yin Yang Xem bài viết
    Bạn thử dùng phuơng thức Paint, CellPaint của DataGridView để vẽ lại các header này, chỉ là hiển thị chứ ko thay đổi gì đến cấu trúc của dataGridView
    bạn có thể chỉ cụ thể hơn tý dc k,mình chưa hiểu lắm .và nếu mình muốn xuất ra file excel mà vẫn giữ định dạng như vậy thì phải làm sao..!

  4. #4
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Mình cũng đang cần cái này, ai biết chỉ giúp với. Lên mạng đọc code Paint lại các Cell mà k hiểu gì luôn :(

  5. #5
    Ngày gia nhập
    11 2008
    Bài viết
    218

    Các pác thử cái này xem sao, sử dụng control DataGridview chuẩn.
    Attached Thumbnails Attached Thumbnails Untitled.png  
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi who_am_i : 08-08-2011 lúc 09:50 AM.

  6. #6
    Ngày gia nhập
    05 2011
    Nơi ở
    ...loading...
    Bài viết
    205

    Mặc định Merge column header trong DataGridView bằng C#?

    Thử nha!
    Visual C# Code:
    1.         private void button1_Click(object sender, EventArgs e)
    2.         {
    3.             this.dataGridView1.Columns.Add("Col1", "Điểm Miệng");
    4.             this.dataGridView1.Columns.Add("Col2", "Điểm Thi Viết");
    5.  
    6.             this.dataGridView1.Columns.Add("Col3", "Trung Bình");
    7.             for (int j = 0; j < this.dataGridView1.ColumnCount; j++)
    8.  
    9.             {
    10.  
    11.                 this.dataGridView1.Columns[j].Width = 145;
    12.  
    13.             }
    14.  
    15.             this.dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
    16.  
    17.             this.dataGridView1.ColumnHeadersHeight = this.dataGridView1.ColumnHeadersHeight * 2;
    18.  
    19.             this.dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
    20.  
    21.             this.dataGridView1.CellPainting += new DataGridViewCellPaintingEventHandler(dataGridView1_CellPainting);
    22.  
    23.             this.dataGridView1.Paint += new PaintEventHandler(dataGridView1_Paint);
    24.  
    25.  
    26.  
    27.             this.dataGridView1.Scroll += new ScrollEventHandler(dataGridView1_Scroll);
    28.  
    29.             this.dataGridView1.ColumnWidthChanged += new DataGridViewColumnEventHandler(dataGridView1_ColumnWidthChanged);
    30.  
    31.         }
    32.  
    33.  
    34.  
    35.         void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
    36.  
    37.         {
    38.  
    39.             Rectangle rtHeader = this.dataGridView1.DisplayRectangle;
    40.  
    41.             rtHeader.Height = this.dataGridView1.ColumnHeadersHeight / 2;
    42.  
    43.             this.dataGridView1.Invalidate(rtHeader);
    44.  
    45.         }
    46.  
    47.  
    48.  
    49.         void dataGridView1_Scroll(object sender, ScrollEventArgs e)
    50.  
    51.         {
    52.  
    53.             Rectangle rtHeader = this.dataGridView1.DisplayRectangle;
    54.  
    55.             rtHeader.Height = this.dataGridView1.ColumnHeadersHeight / 2;
    56.  
    57.             this.dataGridView1.Invalidate(rtHeader);
    58.  
    59.         }
    60.  
    61.  
    62.  
    63.         void dataGridView1_Paint(object sender, PaintEventArgs e)
    64.  
    65.         {
    66.             string[] monthes = { "Điểm Hệ Số 1" };
    67.  
    68.             for (int j = 0; j < 2;)
    69.  
    70.             {
    71.  
    72.                 Rectangle r1 = this.dataGridView1.GetCellDisplayRectangle(j, -1,true);
    73.  
    74.                 int w2 = this.dataGridView1.GetCellDisplayRectangle(j + 1, -1, true).Width;
    75.  
    76.                 r1.X += 1;
    77.  
    78.                 r1.Y += 1;
    79.  
    80.                 r1.Width = r1.Width + w2 - 2;
    81.  
    82.                 r1.Height = r1.Height / 2 - 2;
    83.  
    84.                 e.Graphics.FillRectangle(new SolidBrush(this.dataGridView1.ColumnHeadersDefaultCellStyle.BackColor), r1);
    85.  
    86.                 StringFormat format = new StringFormat();
    87.  
    88.                 format.Alignment = StringAlignment.Center;
    89.  
    90.                 format.LineAlignment = StringAlignment.Center;
    91.  
    92.                 e.Graphics.DrawString(monthes[j/2],
    93.  
    94.                     this.dataGridView1.ColumnHeadersDefaultCellStyle.Font,
    95.  
    96.                     new SolidBrush(this.dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor),
    97.  
    98.                     r1,
    99.  
    100.                     format);
    101.  
    102.                 j += 2;
    103.  
    104.             }
    105.  
    106.         }
    107.  
    108.  
    109.  
    110.         void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    111.  
    112.         {
    113.  
    114.             if (e.RowIndex == -1 && e.ColumnIndex > -1)
    115.  
    116.             {
    117.  
    118.                 Rectangle r2 = e.CellBounds;
    119.  
    120.                 r2.Y += e.CellBounds.Height / 2;
    121.  
    122.                 r2.Height = e.CellBounds.Height / 2;
    123.  
    124.  
    125.  
    126.                 e.PaintBackground(r2, true);
    127.  
    128.                
    129.  
    130.                 e.PaintContent(r2);
    131.  
    132.                 e.Handled = true;
    133.  
    134.             }      
    135.         }
    MySkill Cần sự chung tay của tất cả các bạn
    http://forums.congdongcviet.com/show...613#post268613

  7. #7
    Ngày gia nhập
    08 2008
    Bài viết
    36

    Ủa, hay nhỉ, nhìn vào mình cứu tưởng là Xtragrid của DEV chứ, vì mình cũng làm cái quản lý điểm.
    Hii, ít ngâm cứu datagridview nên ko giúp gì đc cho bạn, mình xài DEV thôi, nếu giúp đc gì về DEV cứ PM nhé

  8. #8
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Bạn ơi cho mình hỏi khi mình gán Source cho grid mà đã phân chia cột thì có ảnh hưởng gì đến cấu trúc dữ liệu của mình không. Và phải gán source như thế nào

  9. #9
    Ngày gia nhập
    11 2008
    Bài viết
    218

    Thông thường thì mình hay dùng dạng 3 lớp:
    -Lớp 1: các function làm việc trực tiếp với database;
    -Lớp 2:
    +Class1: định nghĩa các thuộc tính cần thao tác;
    +Class2: các function sử dụng lớp 1 để trả về mảng Class1;
    +Class3: các function sử dụng kết quả của Class2 để trình bày lên Form;
    -Lớp 3 (Form): gọi Class3;

    Ngoài ra bạn có thể tham khảo cách dùng DataReader để đọc dữ liệu rồi đổ từng dòng vào Gridview.
    Đã được chỉnh sửa lần cuối bởi who_am_i : 08-08-2011 lúc 09:49 AM.

  10. #10
    Ngày gia nhập
    07 2010
    Bài viết
    138

    OK, những cái bạn nói thì mình hiểu, mình cũng làm thế mà. mình muốn hỏi là bây giờ mình muốn đổ Source, giả sử là 1 IQuerryable<> vào chẳng hạn, thì phải làm thế nào. có thể đổ vào trực tiếp hay phải foreach rồi gán hả bạn..
    À bạn ơi tiện đây cho mình hỏi có cách nào hay hay để thay đổi được chiều của gridview không. Mình có tạo 1 proc để in ra bảng chấm công, dạng #table(date, morning, afternoon, timeAdd) dựa vào dữ liệu chấm công, nó có đủ các date trong tháng. Nhưng mình muốn xuất kiểu với header là cột date (1 2 3 4 5 ...30) trên gridview thì làm thế nào, có cách nào không bạn

Các đề tài tương tự

  1. header column trong gridview
    Gửi bởi tanghien trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 04-04-2013, 10:54 PM
  2. Merge column header trong DataGridView như thế nào ?
    Gửi bởi lephongpc3 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 28-03-2013, 03:35 PM
  3. Merge column header trong datagridview
    Gửi bởi langim1nuhon trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 03-12-2012, 02:58 PM
  4. Các lấy tên header columns khi click vào header columns trong datagridview?
    Gửi bởi anhchangkho68 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 14-01-2012, 11:56 AM
  5. Tạo nhiều header column ở dataGridView thế nào?
    Gửi bởi quangminhhn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 06-10-2011, 09:00 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn