Member 8478234 Ответов: 2

Как преобразовать таблицы данных в строку формата HTML


У меня есть две таблицы данных datatable1 и datatable2.

datatable1 содержит заголовок с 3 строками
SL.No CutomerId CustomerName PaymentId  
1,12345,ABC,99999 
2,23456,FGH,88888 
3,54321,MNB,77777


datatable2 содержит заголовок с 2 строками
BankRef BankName PaymentId Address City  
ref12, HSBC, 99999, Street11, NY 
ref13, HSBC, 88888, Street11, NY


Мое требование-объединить обе таблицы только с выбранными столбцами в формате html string, как показано ниже (заголовок и строки). Это 3 столбца из datatable2 и 1 столбец из datatable1.

BankRef BankName CustomerName PaymentId
ref12,   HSBC,    ABC,       99999 


Как этого добиться.
Заранее спасибо.

Что я уже пробовал:

Как объединить эти две таблицы данных и показать в одной

ZurdoDev

Используйте сетку, напишите sql, чтобы выбрать из обеих таблиц и получить то, что вы хотите, а затем привяжите свою сетку к данным. Где ты застрял?

2 Ответов

Рейтинг:
15

Anisuzzaman Sumon

Вот вам готовый суп.просто используйте и не стесняйтесь, если у вас есть какие-либо вопросы

    class Program
    {
       static DataTable dtCustomer = new DataTable();
       static DataTable dtPaymentInfo = new DataTable();
        static DataTable dtResults = new DataTable();
        static void Main(string[] args)
        {
            FillDataTables();
            var t = from paymentinfo in dtPaymentInfo.AsEnumerable()
                    join customer in dtCustomer.AsEnumerable()
                    on paymentinfo.Field<int>("PaymentId") equals customer.Field<int>("PaymentId")
                    select new { BankRef = paymentinfo.Field<string>("BankRef") , BankName = paymentinfo.Field<string>("BankName"), CustomerName = customer.Field<string>("CustomerName"), PaymentId = paymentinfo.Field<int>("PaymentId") };
            dtResults.Columns.Add("BankRef", typeof(string));
            dtResults.Columns.Add("BankName", typeof(string));
            dtResults.Columns.Add("CustomerName", typeof(string));
            dtResults.Columns.Add("PaymentId", typeof(int));
            foreach (var r in t)
            {
                dtResults.Rows.Add(r.BankRef,r.BankName,r.CustomerName,r.PaymentId);
            }

            string html = ConvertDataTableToHTML(dtResults);
        }
        public static string ConvertDataTableToHTML(DataTable dt)
        {
            string html = "<table border="\"1\"">";
            //add header row
            html += "<tr>";
            for (int i = 0; i < dt.Columns.Count; i++)
                html += "<td>" + dt.Columns[i].ColumnName + "</td>";
            html += "</tr>";
            //add rows
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                html += "<tr>";
                for (int j = 0; j < dt.Columns.Count; j++)
                    html += "<td>" + dt.Rows[i][j].ToString() + "</td>";
                html += "</tr>";
            }
            html += "</table>";
            return html;
        }

        static void FillDataTables()
        {
            //To fill data with your sample values for testing purpose
            //SL.No CutomerId CustomerName PaymentId
            dtCustomer.Columns.Add("SL.No", typeof(int));
            dtCustomer.Columns.Add("CutomerId", typeof(int));
            dtCustomer.Columns.Add("CustomerName", typeof(string));
            dtCustomer.Columns.Add("PaymentId", typeof(int));

            dtCustomer.Rows.Add(1, 12345, "ABC", 99999);
            dtCustomer.Rows.Add(2, 23456, "FGH", 88888);
            dtCustomer.Rows.Add(3, 54321, "MNB", 77777);

            //BankRef BankName PaymentId Address City  

            dtPaymentInfo.Columns.Add("BankRef",typeof(string));
            dtPaymentInfo.Columns.Add("BankName", typeof(string));
            dtPaymentInfo.Columns.Add("PaymentId", typeof(int));
            dtPaymentInfo.Columns.Add("Address", typeof(string));
            dtPaymentInfo.Columns.Add("City", typeof(string));

            dtPaymentInfo.Rows.Add("ref12", "HSBC", 99999, "Street11", "NY");
            dtPaymentInfo.Rows.Add("ref13", "HSBC", 88888, "Street11", "NY");

        }
    }
</int></string></string></string></int></int>


Рейтинг:
1

Praveen_Kumar Gupta

использовать эту функцию

public static string ConvertDataTableToHTML(DataTable dt)
    {
        string html = "<table>";
        //add header row
        html += "<tr>";
        for(int i=0;i<dt.columns.count;i++)>
            html+="<td>"+dt.Columns[i].ColumnName+"</td>";
        html += "</tr>";
        //add rows
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            html += "<tr>";
            for (int j = 0; j< dt.Columns.Count; j++)
                html += "<td>" + dt.Rows[i][j].ToString() + "</td>";
            html += "</tr>";
        }
        html += "</table>";
        return html;
    }


И вы можете доработать к Согласно Вашему требованию