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

Đề tài: Lấy Index row sau khi sắp xếp trên datagridview

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

    Mặc định Lấy Index row sau khi sắp xếp trên datagridview

    Chào các bạn,
    Mình có vấn đề rắc rối như thế này:
    Một datatable tên dt có dữ liệu như sau:
    MASV HOTEN
    ---------------
    SV2 Nam ->index dòng là 0
    SV3 Minh ->index dòng là 1
    SV1 Tuan ->index dòng là 2

    Sau đó tạo một datagridview1 và gán: datagridview1.DataSource=dt;
    Tạo một mảng int[] INDEX để lưu index của các dòng ban đầu. INDEX={0,1,2}

    Sau khi sắp xếp trên datagridview1 bằng cách click chuột vào tên cột (MASV) thì datagridview1 hiển thị như sau:
    MASV HOTEN
    ---------------
    SV1 Tuan ->index là 2
    SV2 Nam ->index là 0
    SV3 Minh ->index là 1
    Mình muốn là sau khi sắp xếp thì mảng INDEX sẽ lấy theo thứ tự dòng mới trên datagridvew, nghĩa là mảng INDEX={2,0,1} thì phải làm như thế nào.
    Vì theo mình biết là sau khi sắp xếp trên datagridview mặc dù vị trí dòng thay đổi nhưng index của các dòng vẫn giữ nguyên.

    Cám ơn các bạn nhiều.

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Lấy row index trên Gridview đơn giản là:
    var row = dataGridView1.CurrentRow.Index

    Còn Datatable thì có ID

    2 cái đó không liên quan gì đến nhau cả. Thêm trường Order nữa, nếu bạn muốn sắp sếp theo ý muốn.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Cái bạn muón là:

    Trên cái Gridview, đặt thêm một cột Index.
    Trong event gridview.rowdatabound, đếm số index và ghi vào cột index này.
    Sau khi sort, dùng cột index này để điều chỉnh mảng INDEX[]

    Tuy nhiên, cách trên rất nguy hiểm. Trên nguyên tắc, chỉ có dân chuyên nghiệp mới dám đụng chạm vào event sort.

    Cách an toàn hơn là tạo thêm một trường row_number() trong câu truy vấn. Trường này bind vào một key value trên gridview. Như vậy mảng INDEX[] của bạn có thể được điều chỉnh bất cứ lúc nào cần thiết.

    Có nhiều cách để thực hiện, nhưng phải biết bạn cần mảng INDEX[] để làm gì. Có những trường hợp chỉ cần đổi cách suy nghĩ thì vấn đề giải quyết đơn giản đi rất nhiều.

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

  1. ADO.NET cách gán thứ tự index cho các column trên DataGridView
    Gửi bởi hung_3805 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 20-08-2012, 02:02 PM
  2. datagridview.Row[index].selected có sử dụng để chọn một row trong datagridview
    Gửi bởi vanthanhkbs trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 21-06-2012, 07:49 PM
  3. Lỗi Index was out of range trên DataGridView
    Gửi bởi Scorpius DLord trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 18-11-2011, 02:52 PM
  4. Lấy danh sách index của những cột được chọn trên datagridview ?
    Gửi bởi beginner.nguyen trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 28-08-2011, 01:35 AM
  5. ADO.NET Lỗi Index was out of range khi lấy chỉ số dòng, cột trên datagridview
    Gửi bởi haui91 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 25-08-2011, 10: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