我想使用下面的代码在表格中显示查询结果。
我的问题是在DataGrid
的第2行显示第1行和第2行的查询结果。类似地,在第3行中显示第1行第2行和第3行的结果,依此类推。
有人能告诉我如何在DataGrid的第二行显示第二行的查询等等吗?
有没有办法在一行填满后清除表格?
For Each d In DataGrid1.Items
htbl = d.FindControl("Table1")
sql = "select username, count(*) as cnt from elexa where r_id='" & d.Cells.Item(0).Text & "' group by username order by cnt desc"
cmd = New SqlCommand(sql, conn)
adp=new SqlDataAdapter(cmd)
adp.Fill(ds,"elexa")
tbl = ds.Tables("elexa")
tbl = ds.Tables("elexa")
cnt = tbl.Rows.Count
For i = 0 To cnt - 3
Dim hRw As New HtmlTableRow
Dim hRw2 As New HtmlTableRow
For j = 0 To 2
Dim hCll As New HtmlTableCell
Dim hcll2 As New HtmlTableCell
hCll.InnerHtml ="<font size=2>" & ds.Tables("elexa").Rows(i).Item("username") & "</font>"
hRw.Controls.Add(hCll)
i = i + 1
hCll = New HtmlTableCell
Next j
htbl.Controls.Add(hRw)
hRw2.BgColor = "silver"
hRw2.Height = "1px"
Next
Next d
答案 0 :(得分:0)
我认为之前选择的结果会保留在数据集ds
中。
因此,第一个选择得到一个结果,第二个得到两个,第三个得到三个,依此类推。
您可以将id附加到表名"elexa" + d.Cells.Item(0).Text
或为每个请求创建一个新数据集。
所以你可以改变
adp.Fill(ds,"elexa")
tbl = ds.Tables("elexa")
tbl = ds.Tables("elexa")
到
apd.Fill(ds, "elexa" + d.Cells.Item(0).Text)
tbl = ds.Tables("elexa" + d.Cells.Item(0).Text)
像这样,你为每一行创建一个新表,而不必以某种方式清除它。
答案 1 :(得分:0)
通过在每行之后创建新数据集
,我得到了所需的结果