Создание динамической настраиваемой таблицы данных с использованием таблицы и метки - PullRequest
0 голосов
/ 23 марта 2012

Я использую Visual Studio 2008. Я пытаюсь распечатать все данные из таблицы в формате html. Я получаю только первую строку из базы данных, но я хочу, чтобы все данные выводились на экран.Смотрите код, который я написал.Пожалуйста, помогите мне.

 public void cj()
{
    connString = "Data Source=CJ-PC;Initial Catalog=Electro;Integrated Security=True";
    using(con = new SqlConnection(connString))
    {
        con.Open();
        string sqlQuery = "Select * from CUSTOMER_DETAIL";
        using(cmd = new SqlCommand(sqlQuery,con))
        {
            using (sdr = cmd.ExecuteReader())
            {
                using (DataTable dt = new DataTable())
                {
                    dt.Load(sdr);
                    PlaceHolder1.Controls.Add(new LiteralControl("<table style='border:solid 2px Red; width:600px;'>"));
                    PlaceHolder1.Controls.Add(new LiteralControl("<tr>"));
                    int i = 0;
                    foreach (DataColumn dc in dt.Columns)
                    {
                        i++;
                        Label myLabel = new Label();
                        myLabel.ID = Convert.ToString(i);                            
                        PlaceHolder1.Controls.Add(new LiteralControl("<td style='border:solid 2px Blue;'>"));
                        myLabel.Text = "" + dc.ToString();
                        PlaceHolder1.Controls.Add(myLabel);
                        PlaceHolder1.Controls.Add(new LiteralControl("</td>"));
                    }
                    PlaceHolder1.Controls.Add(new LiteralControl("</tr>"));

                    PlaceHolder1.Controls.Add(new LiteralControl("<tr>"));
                    int j = 0;
                    foreach (DataRow dr in dt.Rows)
                    {                           
                        if(j < dt.Columns.Count)
                        {
                            Label myLabel = new Label();
                            myLabel.ID = Convert.ToString(i);
                            PlaceHolder1.Controls.Add(new LiteralControl("<td style='border:solid 2px aqua;'>"));
                            myLabel.Text = "" + dr[j].ToString();
                            PlaceHolder1.Controls.Add(myLabel);
                            PlaceHolder1.Controls.Add(new LiteralControl("</td>"));
                        }
                        j++;
                    }
                    PlaceHolder1.Controls.Add(new LiteralControl("</tr>"));
                    PlaceHolder1.Controls.Add(new LiteralControl("</table>"));
                }                           
            }
        }

Ответы [ 2 ]

2 голосов
/ 23 марта 2012
Проблема

в вашем коде, когда вы связываете столбцы с каждым из row

, вы должны добавить do while для добавления столбцов строк.эта функция должна работать в соответствии с вашей логикой:

      foreach (DataRow dr in dt.Rows)
                {
                    PlaceHolder1.Controls.Add(new LiteralControl("<tr>"));      
                     int k = 0;
                     do
                      {
                        Label myLabel1 = new Label();
                        myLabel1.ID = Convert.ToString(k);
                        PlaceHolder1.Controls.Add(new LiteralControl("<td style='border:solid 2px aqua;'>"));
                        myLabel1.Text = "" + dr[k].ToString();
                        PlaceHolder1.Controls.Add(myLabel1);
                        PlaceHolder1.Controls.Add(new LiteralControl("</td>"));
                        k++;
                      } while (k < dt.Columns.Count);
                     PlaceHolder1.Controls.Add(new LiteralControl("</tr>"));    
                }
1 голос
/ 23 марта 2012

Если у вас нет особых причин следовать вашему шаблону, я бы предпочел использовать встроенные элементы управления .Net, такие как ListView, для построения таблицы.

...