2

我正在尝试使用数据集中的一些数据将输入复选框类型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)和其他一些组合,但结果仍然相同。将控件添加到单元格会使复选框(以及早期定义的所有内容)消失。

谢谢你们。

4

1 回答 1

1

您应该使用Literal控件,而不是使用.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 对象。

所以你的文本基本上已经被编译成文字控件了。我认为这只会解决您遇到的显示问题,同时使用.Text属性和.Controls集合。

于 2013-03-04T19:38:03.293 回答