使用表和标签创建动态自定义DataGrid

时间:2012-03-23 06:54:32

标签: asp.net database html-table datarow

我正在使用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 个答案:

答案 0 :(得分:2)

当p 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 :(得分:1)

除非您有特定的理由遵循您的模式,否则我宁愿使用内置的.Net控件(如ListView)来构建您的表。