我希望我正确地问了问题标题。让我解释一下我的问题 - 我正在通过vb.net代码创建一个表(htmltablecell,htmltablerow ..)没有这个表填充sql查询并且工作正常。但是在一个tablecell中的这个表中,我需要添加一个下拉列表,它需要一个完全不同的查询,并且应该在每一行上独立运行。所以代码如下
Sql =“...” rd = ExecuteReader(SqlCnn,Sql)
Dim newcounter As Integer = 0
While rd.Read()
newcounter += 1
Dim tr As New HtmlTableRow
Dim td As New HtmlTableCell
Dim chkbox As New CheckBox
Dim id As String = rd("id") & ""
If id.Length = 0 Then id = "new" & newcounter
id &= "_" & rd("col1")
chkbox.Style.Add("width", "20%")
chkbox.ID = "new_id_" & id
chkbox.Text = rd("col1")
tr.Style.Add("width", "100%")
td.Style.Add("width", "10%")
td.Style.Add("text-align", "left")
td.Controls.Add(chkbox)
tr.Cells.Add(td)
td = New HtmlTableCell
td.Style.Add("width", "30%")
Dim ddl As New dropdownlist
ddl.Style.Add("width", "80%")
ddl.ID = "a1_" & id
--???????
td.Controls.Add(ddl)
tr.Cells.Add(td)
???在代码中,每次使用自己的datareader以及循环和查询时,下拉列表将被填充。我怎么能做到这一点?
答案 0 :(得分:0)
我会用2个查询做到这一点; 1获取ddl数据,1获取实际记录。在实际结果之前获取ddl数据(ddlDataReader),创建ddl对象并将其添加到每一行。
这样的事情应该有效:(我不做VB.Net,所以你可能需要解决问题)
Dim ddl As New dropdownlist
ddl.Style.Add("width", "80%")
ddl.ID = "a1_" & id
While ddlDataReader.Read()
---add items to ddl
end
Dim newcounter As Integer = 0
While rd.Read()
newcounter += 1
Dim tr As New HtmlTableRow
Dim td As New HtmlTableCell
Dim chkbox As New CheckBox
Dim id As String = rd("id") & ""
If id.Length = 0 Then id = "new" & newcounter
id &= "_" & rd("col1")
chkbox.Style.Add("width", "20%")
chkbox.ID = "new_id_" & id
chkbox.Text = rd("col1")
tr.Style.Add("width", "100%")
td.Style.Add("width", "10%")
td.Style.Add("text-align", "left")
td.Controls.Add(chkbox)
tr.Cells.Add(td)
td = New HtmlTableCell
td.Style.Add("width", "30%")
td.Controls.Add(ddl)
tr.Cells.Add(td)
另一种方法是将ddl数据加载到数据表中,以便您可以多次循环它,然后在创建每一行时创建具有唯一ID的ddl。