如何从后面的代码中将sql select结果分配给标签?

时间:2012-06-22 09:14:26

标签: c# asp.net sql

我想在Label中显示结果,我写了一个查询,通过该查询我得到了一些记录,我想根据名称分配这些记录。

我有5个标签:A,B,C,D,E这些标签我想显示记录。

查询:

select s.Name, count(1)as Records from tbl_Case tc
inner join tbl_subcase ts on ts.id = tc.Id
inner join tbl_supercase tsc on tsc.id = tc.supercaseid
inner join course c on c.id = b.courseid
where s.isvalid = 1 group by s.Name

从查询中假设我得到A = 4,B = 10,c = 2,E = 100并且我没有得到D的记录所以我想在标签中显示为4条记录,10条记录,2条记录,未找到记录,100条记录。

请有人告诉我如何从Code Behind中分配标签中的记录。

2 个答案:

答案 0 :(得分:2)

lblA.Text = lblB.Text = ... = "No records found";
using (var con = new SqlConnection("Data Source=myServerAddress;" +
        "Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"))
{
    con.Open();
    var com = con.CreateCommand();
    com.CommandType = CommandType.Text;
    com.CommandText = @"
        select s.Name, count(1)as Records from tbl_Case tc
        inner join tbl_subcase ts on ts.id = tc.Id
        inner join tbl_supercase tsc on tsc.id = tc.supercaseid
        inner join course c on c.id = b.courseid
        where s.isvalid = 1 group by s.Name";
    using (var read = com.ExecuteReader())
    {
        while (read.Read())
        {
            if (read["Name"] as string == "A")
                lblA.Text = Convert.ToString(read["tc"]);
            else if (read["Name"] as string == "B")
                lblA.Text = Convert.ToString(read["tc"]);
            ...
        }
    }
}

答案 1 :(得分:0)

您是否想要知道如何将代码中的标签控件ID与查询返回的名称进行匹配。如果是这样,您可以使用

Page.FindControl()

Control.FindControl()

在迭代返回的数据时匹配正确的控件。您需要添加一些额外的代码来处理丢失的记录(即示例中的D)。您的代码背后需要知道可能有多少条记录(即可能是一个简单的for循环迭代所需的次数)。

http://msdn.microsoft.com/en-us/library/31hxzsdw.aspx