Displaying DataTable Columns Side-By-Side C# Console Application

Alteridin

I am completely new at coding. I felt like I was learning quickly and then of course was humbled by all there is in this world. I am currently trying to figure out if you can print DataTable Columns beside each other instead of up and down.

Here is some code that I wrote(experimenting because I feel like I have no idea anymore):

private void DataClaimsTable()
        {
            Console.Clear();
            Queue<Claims> allInQueue = _claimsRepo.GetClaims();
            DataTable claimsDT = new DataTable("Komodo Insurance Claims");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (claimsDT.TableName.Length / 2)) + "}", claimsDT));
            Console.ResetColor();
            DataColumn idColumn = new DataColumn("Claim ID", typeof(int));
            DataColumn typeColumn = new DataColumn("Claim Type", typeof(Enum));
            DataColumn descriptionColumn = new DataColumn("Description", typeof(string));
            DataColumn amountColumn = new DataColumn("Amount", typeof(decimal));
            DataColumn accidentColumn = new DataColumn("Date of Accident", typeof(DateTime));
            DataColumn claimColumn = new DataColumn("Date of Claim", typeof(DateTime));
            DataColumn validColumn = new DataColumn("Valid Claim", typeof(bool));
            claimsDT.Columns.Add(idColumn);
            claimsDT.Columns.Add(typeColumn);
            claimsDT.Columns.Add(descriptionColumn);
            claimsDT.Columns.Add(amountColumn);
            claimsDT.Columns.Add(accidentColumn);
            claimsDT.Columns.Add(claimColumn);
            claimsDT.Columns.Add(validColumn);
            DataRow idRow;
            Console.WriteLine(idColumn);
            foreach (Claims idPrint in allInQueue)
            {
                idRow = claimsDT.NewRow();
                idRow["Claim ID"] = idPrint.ClaimID;
                claimsDT.Rows.Add(idRow);
                Console.WriteLine(idRow[0]);
            }
            Console.WriteLine();
            DataRow typeRow;
            Console.WriteLine(typeColumn);
            foreach (Claims typePrint in allInQueue)
            {
                typeRow = claimsDT.NewRow();
                typeRow["Claim Type"] = typePrint.ClaimType;
                claimsDT.Rows.Add(typeRow);
                Console.WriteLine(typeRow[1]);
            }
            Console.WriteLine();
            DataRow descriptionRow;
            Console.WriteLine(descriptionColumn);
            foreach (Claims descriptionPrint in allInQueue)
            {
                descriptionRow = claimsDT.NewRow();
                descriptionRow["Description"] = descriptionPrint.ClaimDescription;
                claimsDT.Rows.Add(descriptionRow);
                Console.WriteLine(descriptionRow[2]);
            }
            Console.WriteLine();
            DataRow amountRow;
            Console.WriteLine(amountColumn);
            foreach (Claims amountPrint in allInQueue)
            {
                amountRow = claimsDT.NewRow();
                amountRow["Amount"] = amountPrint.ClaimAmount;
                claimsDT.Rows.Add(amountRow);
                Console.WriteLine(amountRow[3]);
            }
            Console.WriteLine();
            DataRow dateOfAccidentRow;
            Console.WriteLine(accidentColumn);
            foreach (Claims dateOfAccidentPrint in allInQueue)
            {
                dateOfAccidentRow = claimsDT.NewRow();
                dateOfAccidentRow["Date of Accident"] = dateOfAccidentPrint.DateOfAccident;
                claimsDT.Rows.Add(dateOfAccidentRow);
                Console.WriteLine(dateOfAccidentRow[4]);
            }
            Console.WriteLine();
            DataRow dateOfClaimRow;
            Console.WriteLine(claimColumn);
            foreach (Claims dateOfClaimPrint in allInQueue)
            {
                dateOfClaimRow = claimsDT.NewRow();
                dateOfClaimRow["Date of Claim"] = dateOfClaimPrint.DateOfClaim;
                claimsDT.Rows.Add(dateOfClaimRow);
                Console.WriteLine(dateOfClaimRow[5]);
            }
            Console.WriteLine();
            DataRow isValidRow;
            Console.WriteLine(validColumn);
            foreach (Claims isValidPrint in allInQueue)
            {
                isValidRow = claimsDT.NewRow();
                isValidRow["Valid Claim"] = isValidPrint.IsValid;
                claimsDT.Rows.Add(isValidRow);
                Console.WriteLine(isValidRow[6]);
            }
            Console.WriteLine();
        }

Output:

                                                Komodo Insurance Claims
Claim ID
1
2

Claim Type
Car
Home

Description
Rear bumper hit at traffic light.
Burned down due to unsupervised child.

Amount
3000.00
12000.00

Date of Accident
4/9/2020 12:00:00 AM
3/12/2020 12:00:00 AM

Date of Claim
4/9/2020 12:00:00 AM
4/14/2020 12:00:00 AM

Valid Claim
True
False


Press any key to continue...
OhmnioX

I have modified your existing code so that it can print the DataColumns beside each other.

Also, You don't need multiple for loops to map your Queue object to DataRow. Refer the below code for more information:

private static void DataClaimsTable()
    {
        Console.Clear();
        Queue<Claims> allInQueue = _claimsRepo.GetClaims();
        DataTable claimsDT = new DataTable("Komodo Insurance Claims");
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (claimsDT.TableName.Length / 2)) + "}", claimsDT));
        Console.ResetColor();
        DataColumn idColumn = new DataColumn("Claim ID", typeof(int));
        DataColumn typeColumn = new DataColumn("Claim Type", typeof(Enum));
        DataColumn descriptionColumn = new DataColumn("Description", typeof(string));
        DataColumn amountColumn = new DataColumn("Amount", typeof(decimal));
        DataColumn accidentColumn = new DataColumn("Date of Accident", typeof(DateTime));
        DataColumn claimColumn = new DataColumn("Date of Claim", typeof(DateTime));
        DataColumn validColumn = new DataColumn("Valid Claim", typeof(bool));
        claimsDT.Columns.Add(idColumn);
        claimsDT.Columns.Add(typeColumn);
        claimsDT.Columns.Add(descriptionColumn);
        claimsDT.Columns.Add(amountColumn);
        claimsDT.Columns.Add(accidentColumn);
        claimsDT.Columns.Add(claimColumn);
        claimsDT.Columns.Add(validColumn);
        DataRow idRow;
        Console.WriteLine(idColumn);
        foreach (Claims idPrint in allInQueue)
        {
            idRow = claimsDT.NewRow();
            idRow["Claim ID"] = idPrint.ClaimID;
            idRow["Claim Type"] = idPrint.ClaimType;
            idRow["Description"] = idPrint.ClaimDescription;
            idRow["Amount"] = idPrint.ClaimAmount;
            idRow["Date of Accident"] = idPrint.DateOfAccident;
            idRow["Date of Claim"] = idPrint.DateOfClaim;
            idRow["Valid Claim"] = idPrint.IsValid;
            claimsDT.Rows.Add(idRow);
        }
        PrintDataTable(claimsDT);
        Console.WriteLine();
    }

    private static void PrintDataTable(DataTable table)
    {
        Console.WriteLine("{0,10}\t{1,10}\t{2,10}\t{3,10}\t{4,25}\t{5,25}\t{6,10}",
           "Claim ID",
           "Claim Type",
           "Description",
           "Amount",
           "Date of Accident",
           "Date of Claim",
           "Valid Claim"
           );
        foreach (DataRow row in table.Rows)
        {
            Console.WriteLine("{0,10}\t{1,10}\t{2,10}\t{3,10}\t{4,25}\t{5,25}\t{6,10}",
                row["Claim ID"],
                row["Claim Type"],
                row["Description"],
                row["Amount"],
                row["Date of Accident"],
                row["Date of Claim"],
                row["Valid Claim"]
                );
        }
    }

The PrintDataTable method will print your datatable in the tabular format. In this the string is formatted properly with {0,10} where 10 indicates number of spaces to allocate and \t for allocating tab space. You can play around these values to properly format data. For more information on formatting the output data refer Microsoft document for Composite-Formatting

The following is the sample output: enter image description here

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Licensing system for client side code web application

Licensing system for client side code web application

Adicionar Scroll to Side of DataTable (Package DT)

How to organize F# and C# side by side

Running Multiple Application Instances and Configurations Side by Side on an Azure Service Fabric Cluster

Displaying two iFrames side by side

PrimeNG DataTable server-side paging

Is this client side application secure?

Displaying JSON server response on client side without JQuery

side by side boxplot in R

How to print output side by side?

Catplot with Seaborn, side by side

Strip away empty columns on the left side of a named range

flutter listview and columns side by side

How TO - Align Images Side By Side

How to get image src value from server side jquery datatable in datatable?

Bootstrap side by side DIV

Compare-Object - Separate side columns

OCR(optical character recognition) should use client side or server side in web application

Put 2 svg side by side

How to send custom data to DataTable server-side processing not from DataTable's filter input?

Client side data to server side

C# Simple console application displaying/logical issue

Formatting server side jQuery Datatable

Highcharts - how to display a chart with stacked and un-stacked columns side-by-side

How can I adjust the columns after initializing server-side processing datatable?

How to add console to client side page

How to change the order of columns and plot images side by side with seaborn in Python?

C# Concat DataTable Columns datatable as enumerable

TOP lista

quentelabel

Arquivo