การเปรียบเทียบ DataGridview สองรายการ

ฉันมีสอง datagridviews ในรูปแบบเดียว อันแรก datagridview1 มีคอลัมน์และข้อมูล:

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

datagridview2มี

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

ฉันต้องการขอความช่วยเหลือเกี่ยวกับวิธีเปรียบเทียบ DataGridview สองรายการ ดังที่คุณเห็นในภาพ ฉันต้องการเปรียบเทียบสี่คอลัมน์จาก DataGridview หนึ่งไปยัง DataGridview อื่น และดูว่าผลลัพธ์ใดที่ตรงกัน ตัวอย่างเช่น ชื่อ roo ตรงกับ DataGridview อื่นหรือไม่ ฉันต้องการให้ส่งค่าใน ID (8787) ไปยัง DataGridview อื่น


person Kaswin Singh    schedule 02.10.2012    source แหล่งที่มา
comment
ปัญหาเฉพาะคืออะไร? คุณรู้วิธีการเข้าถึงค่าที่มีอยู่ในเซลล์หรือไม่? คุณรู้วิธีการเปรียบเทียบค่าหรือไม่? คุณรู้วิธีการตั้งค่าหรือไม่?   -  person TheBlastOne    schedule 02.10.2012
comment
หาก DataGridviews ทั้งสองชี้ไปยังแหล่งข้อมูลเดียวกัน ก็ควรจะซิงค์กัน ดีกว่าที่จะอธิบายความต้องการของคุณจากมุมมองของผู้ใช้   -  person ray    schedule 02.10.2012


คำตอบ (3)


มีวิธีแก้ไขที่ง่ายมากในการเปรียบเทียบ twoo datagridview และแสดงผลลัพธ์ในอันที่ 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

สมมติว่าคุณเติม datagrid ทั้งสองด้วยวัตถุเดียวกันที่มีคุณสมบัติ 4 อย่างนี้จากตัวอย่างของคุณ คุณต้องตรวจสอบแถวที่เลือกจาก DataGrid แรกว่าใน DataGrid ที่สองมีออบเจ็กต์ที่ตรงกันหรือไม่ โดยขึ้นอยู่กับตัวกรองของคุณ ใช้ Linq หากเป็นเช่นนั้น ให้คัดลอกข้อมูลจากรายการที่เลือกจาก DataGrid แรกไปยังองค์ประกอบที่ตรงกันตั้งแต่วินาทีนั้น ฉันกลัวว่าคุณจะต้องทำตามขั้นตอนเหล่านี้ทั้งหมดด้วยตนเอง เนื่องจากไม่มีวิธีใดที่สามารถเปรียบเทียบตารางข้อมูลสองตารางได้ และคุณเพียงแค่ตั้งค่าตัวกรองบางตัวเท่านั้น งานก็เสร็จสิ้น คุณจะมีงานทำบ้างแต่ก็ไม่ยาก ขอให้โชคดี.

person Alexandru Dicu    schedule 02.10.2012

คำตอบของ Steve ทำงานไม่ถูกต้องและจะไม่คอมไพล์

นี่คือวิธีแก้ปัญหาของฉัน:

        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());

การวนซ้ำ foreach บน DataGrid จะวนไปตามแต่ละแถว จากนั้นคุณสามารถเลือกเซลล์หรือเซลล์เพื่อเปรียบเทียบได้ โค้ดนี้ยาวนิดหน่อย และฉันแน่ใจว่าสามารถทำให้ง่ายขึ้นได้ แต่ก็ใช้งานได้ดี

ขณะนี้จะตรวจสอบทุกแถวจาก DataGrid 2 ว่าตรงกันใน DataGrid 2 เฉพาะในคอลัมน์เดียวเท่านั้น

การนำเข้าเพื่อจดจำ DataGrid นั้นอิงตามดัชนี 0 คุณสมบัติการนับของ DataGrid ให้ [1]การนับตามดัชนี ดังนั้นเราจึงจำเป็นต้องลบการวนซ้ำครั้งล่าสุดบน DataGrid 2

person Ryan Dooley    schedule 27.01.2017