我正在尝试使用数据集中的一些数据动态地将输入复选框类型和 asp文本框添加到Asp Tablecell。我已经阅读了很少有关于此的帖子,但没有一个组合想要达到。
这是我正在使用的代码(其中 ds 是数据集, tblMeasuredChar 是Asp表):
If ds.Tables(0).Rows.Count > 0 Then
For Each dr As DataRow In ds.Tables(0).Rows
Dim tr As New TableRow()
'defining input
Dim tc As New TableCell()
tc.Text = "<input type=" & Chr(34) & "checkbox" & Chr(34) & " name=" & Chr(34) & "chkMeasuredChars" & Chr(34) & " value=" & Chr(34) & dr("id") & Chr(34) & "/>" & dr("description")
'defining unique textbox
Dim txtbx As New TextBox()
txtbx.ID = "tbMeasuredChars" & dr("id")
'add it to the cell
tc.Controls.Add(txtbx)
'add the cell to the row
tr.Controls.Add(tc)
tblMeasuredChar.Rows.Add(tr)
Next
End If
问题在于我只显示了添加到TableRow的最后一个“东西”。我必须使用这种类型的输入,不可能使用一些asp复选框。是否可以将用户控件添加到已有其他文本文本的TableCell?
我已经尝试添加TableCell,如 tr.Cells.Add(tc)和其他一些组合,但结果仍然相同。将控件添加到单元格会使复选框(以及早期定义的所有内容)消失。
谢谢大家。
答案 0 :(得分:1)
您应该使用Literal
control,而不是使用.Text
属性。像这样:
If ds.Tables(0).Rows.Count > 0 Then
For Each dr As DataRow In ds.Tables(0).Rows
Dim tr As New TableRow()
'defining input
Dim tc As New TableCell()
tc.Controls.Add(New LiteralControl("<input type=" & Chr(34) & "checkbox" & Chr(34) & " name=" & Chr(34) & "chkMeasuredChars" & Chr(34) & " value=" & Chr(34) & dr("id") & Chr(34) & "/>" & dr("description")))
'defining unique textbox
Dim txtbx As New TextBox()
txtbx.ID = "tbMeasuredChars" & dr("id")
'add it to the cell
tc.Controls.Add(txtbx)
'add the cell to the row
tr.Controls.Add(tc)
tblMeasuredChar.Rows.Add(tr)
Next
End If
听起来这很好地满足了您的需求,因为它不像普通的ASP.NET serv控件,它基本上只是静态HTML文本。从上面链接的文档:
ASP.NET编译所有HTML元素和不可读的可读文本 要求服务器端处理此类的实例。对于 例如,一个不包含runat =“server”的HTML元素 其开始标记中的属性/值对被编译为 LiteralControl对象。
因此,您的文本基本上已经编译成Literal控件。我认为只需使用.Text
属性和.Controls
集合即可解决您所遇到的显示问题。