1

以下のコードを使用して、テーブルにクエリ結果を表示したいと考えています。

私の問題は、DataGrid1 行目と 2 行目のクエリ結果の 2 行目に表示されることです。同様に 3 行目に 1 番目、2 番目、3 番目の行の結果が表示されます。

DataGrid の 2 行目に 2 行目だけのクエリを表示する方法など教えていただけないでしょうか。

行がいっぱいになった後にテーブルをクリアする方法はありますか?

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
4

2 に答える 2

0

以前の選択の結果はデー​​タセットに残っていると思いますds。したがって、最初の選択で1つの結果、2番目の選択で2つの結果、3番目の選択で3つの結果が得られます。

テーブル名に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)

このように、行ごとに新しいテーブルを作成し、何らかの方法でそれをクリアする必要はありません。

于 2013-03-06T14:08:25.840 に答える
0

各行の後に新しいデータセットを作成することで、望ましい結果が得られました

于 2013-03-07T06:40:03.397 に答える