Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Hỏi về màu mè trong dataGrid

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    10

    Mặc định Hỏi về màu mè trong dataGrid

    mấy anh cho em hỏi làm thế nào để đổi màu từng dòng trong datagrid,nhưng nó phỉa thực hiện như sau:
    vi dụ: có 4 dòng a-b-c-d-e-f
    yếu cầu : dòng a-c-e : màu vàng
    dong b-d-f : màu xanh.

    vậy phải làm cách nào vậy mấy anh??????
    thanks mọi người trước
    Sửa/Xóa bài viết

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    10

    quên nói cái này alf trong winform.

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

    Đổi màu trong dataGridview ko khó!Bạn chỉ cần xác định vị trí dòng muốn đổi màu thi sẽ làm được ngay.
    Đây là đoạn code mình viết để đổi màu các cell tương ứng khi mình kéo chuột lựa chọn:

    private void button2_Click(object sender, EventArgs e)
    {
    try
    {

    DataGridViewCellStyle style1 = new DataGridViewCellStyle();
    style1.ForeColor = Color.Blue;
    style1.BackColor = Color.Bisque;
    for (int i = dataGridView1.SelectedRows.Count - 1; i >= 0; i--)
    {
    dataGridView1.SelectedRows[i].DefaultCellStyle=style1;
    }

    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message+"\n"+ex.StackTrace);
    }
    }

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Cậu xem cái này ha. Tớ cho các dòng trong DataGridView có màu xen kẽ giữa các dòng (dòng màu LightPink, dòng màu trắng)
    Visual C# Code:
    1. //Đoạn này tạm thời lấy dữ liệu đưa vào datagridview
    2. SqlConnection conn = new SqlConnection("Server=.;Database=Northwind;Integrated Security=True;");
    3. SqlDataAdapter da = new SqlDataAdapter("Select * from Customers", conn);
    4. DataSet ds=new DataSet();
    5. da.Fill(ds, "Customers");
    6. dataGridView1.DataSource = ds.Tables["Customers"];
    7.  
    8. //Bắt đầu chia làm 2 màu trong các dòng
    9. DataGridViewCellStyle style1 = new DataGridViewCellStyle();
    10. style1.ForeColor = Color.Blue;
    11. style1.BackColor = Color.LightPink; //Màu LightPink cho dòng xen kẽ
    12. for (int i = dataGridView1.RowCount - 1; i >= 0; i--)
    13.             {
    14.                 if (i % 2 == 0) dataGridView1.Rows[i].DefaultCellStyle = style1;
    15.             }

    Cậu tự chuyển dòng màu trắng thành màu bạn muốn với việc thêm một DataGridViewCellStyle ha.
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 13-08-2008 lúc 11:24 AM.
    Không biết ghi gì luôn ...

  5. #5
    Ngày gia nhập
    07 2007
    Bài viết
    41

    Tìm trong DataGridView cái sự kiện CellFormating hay gì đó tương tự (không nhớ rõ nữa), rồi thay đổi CellStyle nếu cần (chú ý nên tạo trước style object, tránh thay đổi trực tiếp vào style object của cell, vì như thế sẽ tạo ra một style object độc lập), chứ thay đổi theo cách của Forlorn_hope chí format theo index, không format được theo nội dung cell (người dùng có thể sắp xếp lại danh sánh => không thể biết trước index nào ứng với nội dung nào).

  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Mặc định Hỏi về màu mè trong dataGrid

    Sorry vì tớ không làm hoàn thiện hơn bài này giúp bạn.
    Thanks zxc ha, đúng là chỉ cần bắt sự kiện CellFormatting của DataGridView là có thể tự động cập nhập theo đúng màu mè mà ta chuẩn bị sẵn.
    Visual C# Code:
    1. private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    2.         {
    3.             DataGridViewCellStyle style1 = new DataGridViewCellStyle();
    4.             style1.ForeColor = Color.Blue;
    5.             style1.BackColor = Color.LightPink; //Màu LightPink cho dòng xen kẽ
    6.             for (int i = dataGridView1.RowCount - 1; i >= 0; i--)
    7.             {
    8.                 if (i % 2 == 0) dataGridView1.Rows[i].DefaultCellStyle = style1;
    9.             }
    10.         }

    Đến đây thì không biết có còn cách nào ngắn gọn hơn không nữa?
    Không biết ghi gì luôn ...

  7. #7
    Ngày gia nhập
    07 2007
    Bài viết
    41

    1) Code trên không ổn: CellFormatting được gọi khi cần format cho mỗi Cell được hiển thị. Mỗi lần lại chạy vòng for như thế thì chít => sử dụng EventArgs để thay đổi format, không thay đổi trực tiếp trên DGV như vậy (số row trong DGV có thể rất nhiều, nhưng số row hiển thị trong một thời điểm thì không nhiều).

    2) Style nên tạo ngoài event handler, tránh tạo ra object mỗi lần handle.

    3) Nếu chỉ định thay đổi màu cho dòng chẵn dòng lẻ thì sử dụng 2 thuộc tính RowDefaultCellStyte và AlternatingRowsDefaultCellStyle.

    4) Nếu cẩn format nhiều loại row (3 màu trở lên chăng hạn), ngoài cách dùng event CellFormatting có thể thử event RowPrePaint xem (cái này không chắng được không, nhớ sử dụng RowIndex trong các EventArgs).

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    0

    Bạn ơi cho mìnhh hỏi, làm sao khi kích chuột chọn vào header của colum1 thì màu của datagrid đổi, còn kích vào các header của cột khác thì không? Giúp mình với

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

  1. ADO.NET Cách hiển thị dữ liệu mã utf 8 lên DataGrid trong C#?
    Gửi bởi phongtieutu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 50
    Bài viết cuối: 08-05-2014, 04:35 PM
  2. Làm cách nào xử lý DataGrid trong WPF?
    Gửi bởi taisaox9 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-02-2013, 09:35 PM
  3. Database Sử dụng 2 ô trong Datagrid như thế nào?
    Gửi bởi gacongnghiep_cs trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 08-04-2011, 12:45 AM
  4. Sắp xếp thứ tự các hàng trong DataGrid
    Gửi bởi nobita255 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 23-12-2010, 08:30 AM
  5. Hỏi về datagrid trong asp.net 2.0
    Gửi bởi gaidepnhulamuathu trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 25-07-2008, 08:38 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