我正在使用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>"));
}
}
}
答案 0 :(得分:2)
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)来构建您的表。