Membandingkan dua tampilan datagrid

Saya memiliki dua tampilan datagrid dalam satu bentuk. Yang pertama, datagridview1 memiliki kolom dan data:

name   IC              EMAIL             TELEPHONE  
------------------------------------------------------
rOO    898989096677    [email protected]      018-9097878

datagridview2 punya

name   IC              EMAIL           TELEPHONE      ID 
-----------------------------------------------------------
rOO    898989096677    [email protected]    018-9097878    8787

Saya ingin meminta bantuan tentang cara membandingkan dua datagridview, seperti yang Anda lihat pada gambar. Saya ingin membandingkan empat kolom dari satu datagridview ke datagridview lainnya dan melihat apakah ada hasil yang cocok. Misalnya apakah nama roo cocok dengan datagridview lain, saya ingin nilai di id (8787) dikirim ke datagridview lain.


person Kaswin Singh    schedule 02.10.2012    source sumber
comment
Apa masalah spesifiknya? Anda tahu cara mengakses nilai yang terkandung dalam sel? Anda tahu cara membandingkan nilai? Anda tahu cara menetapkan nilai?   -  person TheBlastOne    schedule 02.10.2012
comment
Jika kedua datagridviews menunjuk ke sumber data yang sama maka keduanya harus sinkron. Lebih baik jelaskan kebutuhan Anda dari sudut pandang pengguna.   -  person ray    schedule 02.10.2012


Jawaban (3)


ada solusi yang sangat sederhana untuk membandingkan dua datagridview dan menunjukkan hasilnya di yang ke-3.

        for (int i = 0; i < dtView1.Rows.Count; i++)
        {
            for (int j = 1; j < dtView1.Columns.Count; j++)
            {

                if ((dtView1.Rows[i][j]) == (dtView2.Rows[i][j]))
                {
                   // here you can add your own logic
                }
                else
                {
              // here you can add your own logic
            }
        }

|

person Steve    schedule 17.03.2015

Anggaplah Anda mengisi kedua datagrid dengan objek yang sama yang berisi 4 properti ini dari contoh Anda. Anda harus memeriksa baris yang dipilih dari datagrid pertama jika di datagrid kedua ada objek yang cocok, berdasarkan filter Anda. Gunakan Linq. Jika ya, salin data dari item yang dipilih dari datagrid pertama ke elemen yang cocok dari detik. Saya khawatir Anda perlu melakukan semua langkah ini secara manual, karena tidak ada metode yang dapat membandingkan dua kisi data dan Anda cukup menyetel beberapa filter dan pekerjaan selesai. Anda akan memiliki beberapa pekerjaan yang harus dilakukan, tetapi itu tidak sulit. Semoga beruntung.

person Alexandru Dicu    schedule 02.10.2012

Jawaban Steve tidak berfungsi dengan benar dan tidak dapat dikompilasi.

Inilah solusi saya:

        int x = 0;
        int y = 0;
        int i = -1;
        int z = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                    i++;

                if ((dataGridView1.Rows[i].Cells[i].Value) == (dataGridView2.Rows[z].Cells[i].Value))
                {
                    x++;
                }
                else
                {
                    y++;
                }
            if (z < dataGridView2.Rows.Count)
            {
                z++;
            }
            if(z == dataGridView2.Rows.Count)
            {
                z--; //subtract 1 from the total count because the datagrid is 0 index based.
            }

     MessageBox.Show("Matched: " + x.ToString() + "\r\n" + "Not Matched: " + y.ToString());

Perulangan foreach pada datagrid akan menelusuri setiap baris, Anda kemudian dapat memilih sel atau bahkan sel untuk dibandingkan. Kode ini agak panjang dan saya yakin dapat disederhanakan, namun tetap berhasil.

Saat ini ini akan memeriksa setiap baris dari datagrid 2 untuk kecocokan di datagrid 2, hanya pada satu kolom.

Impornya mengingat datagrid berbasis indeks 0. Properti Count dari datagrid memberikan penghitungan berbasis indeks [1], jadi kita perlu mengurangi iterasi terakhir pada datagrid 2.

person Ryan Dooley    schedule 27.01.2017