Solved

Compare two data table and highlight the mismatch

Posted on 2010-09-24
4
2,323 Views
Last Modified: 2013-11-26
Hi,

I manage compare two data table, and bind the mismatch in a griview.
How to highlight the mismatch by cell in gridview using C# .net?

Pls refer Compare Two Data Table script:

Pls help.Thks.
public DataTable CompareDataTables(DataTable first, DataTable second)

    {

        first.TableName = "FirstTable";

        second.TableName = "SecondTable";



        //Create Empty Table

        DataTable table = new DataTable("Difference");



        try

        {

            //Must use a Dataset to make use of a DataRelation object

            using (DataSet ds = new DataSet())

            {

                //Add tables

                ds.Tables.AddRange(new DataTable[] { first.Copy(), second.Copy() });



                //Get Columns for DataRelation

                DataColumn[] firstcolumns = new DataColumn[ds.Tables[0].Columns.Count];



                for (int i = 0; i < firstcolumns.Length; i++)

                {

                    firstcolumns[i] = ds.Tables[0].Columns[i];

                }



                DataColumn[] secondcolumns = new DataColumn[ds.Tables[1].Columns.Count];



                for (int i = 0; i < secondcolumns.Length; i++)

                {

                    secondcolumns[i] = ds.Tables[1].Columns[i];

                }



                //Create DataRelation

                DataRelation r = new DataRelation(string.Empty, firstcolumns, secondcolumns, false);



                ds.Relations.Add(r);



                //Create columns for return table

                for (int i = 0; i < first.Columns.Count; i++)

                {

                    table.Columns.Add(first.Columns[i].ColumnName, first.Columns[i].DataType);

                }



                //If First Row not in Second, Add to return table.

                table.BeginLoadData();



                foreach (DataRow parentrow in ds.Tables[0].Rows)

                {

                    DataRow[] childrows = parentrow.GetChildRows(r);

                    if (childrows == null || childrows.Length == 0)

                        table.LoadDataRow(parentrow.ItemArray, true);

                }



                table.EndLoadData();



            }

        }

        catch (Exception ex)

        {

            throw ex;

        }



        return table;

    }

Open in new window

0
Comment
Question by:silterra
  • 3
4 Comments
 
LVL 16

Expert Comment

by:SriVaddadi
ID: 33758194
Do these tables have parent\child relationship?
0
 

Author Comment

by:silterra
ID: 33759260
Hi,
No.
0
 

Author Comment

by:silterra
ID: 33759308
hi,
Attached data of Table A, Table B in worksheet Table A and Table B.
Worksheet Mismatch contains the mismatch data.
Table A is a base. I did comparison Table B against Table A based Step Name column in both Table A and Table B. How to highlight mismatch by cell in mismatch table?

GridView1.DataSource = CompareDataTables(Table B, Table A);
GridView1.DataBind();
Pls help.

ST02-000001-ex.xls
0
 

Accepted Solution

by:
silterra earned 0 total points
ID: 33766414
hi,
I already find the solution.
Thks.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.
A company’s greatest vulnerability is their email. CEO fraud, ransomware and spear phishing attacks are the no1 threat to a company’s security. Cybercrime is responsible for the largest loss of money to companies today with losses projected to r…

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now