0

我的 html 代码中有我的文字。

<tbody>
        <asp:Literal ID="Literal1" runat="server"></asp:Literal>    
</tbody> 

在我的 VB 代码中,我告诉它创建一个 asp:checkbox:

Protected Sub Page_LoadComplete(sender As Object, e As System.EventArgs) Handles Me.LoadComplete

Literal1.Text &= "<tr>" &
                     "<td>" & MyDataReader(0) & "</td>" &
                     "<td>" & MyDataReader(1) & "</td>" &
                     "<td>" & MyDataReader(2) & "</td>" &
                     "<td>Files Go Here</td>" &
                     "<td><asp:CheckBox ID=""CheckBox" & MyDataReader(0) & """ runat=""server"" /></td></tr>"

我的问题是该复选框在加载后没有显示在页面上,其他所有内容都会显示。我查看了页面的源代码,asp:checkbox 在表格的源代码中,但没有显示在网页本身上。我可以输入一个非 asp:checkbox:<input id="Checkbox1" type="checkbox" />它会显示出来。字面量在<form id="form1" runat="server">. 有什么建议么?

4

3 回答 3

1

asp:checkbox处理器渲染。你不能像这样将它插入到文字中。您可以创建一个new CheckBox()并将其添加到Placeholder控件。

例如:

 CheckBox chk = new CheckBox()
 chk.ID = "CheckBox" + MyDataReader(0)
 placeholder.Controls.Add(chk)
于 2012-07-23T18:06:22.270 回答
1

尝试添加 runat="server" 作为属性。

那是

<input id="Checkbox1" type="checkbox" runat="server" />

另外,请查看此论坛帖子: http ://forums.asp.net/t/1676105.aspx/1

于 2012-07-23T18:06:23.597 回答
0

我认为问题在于您的控件被添加为文本而不是呈现的控件。ASP.NET 处理页面并在呈现页面之前将标记替换为“runat='server'”。我认为您正在输出带有无效标记的文本,因此没有显示任何内容。

您可用的选项之一是将表创建为 ASP.NET 表,然后通过代码隐藏添加控件。

未经测试的代码看起来像这样:

Dim table myTable as table
Dim tableRow tr as new TableRow
Dim cell as new TableCell
cells.controls.Add(new CheckBox("values","here")) 'Pseudo code here 
tr.Cells.Add(cell)
table.Rows.Add(tr)

或者你可以用简单的方法将“runat=server”添加到你的表中。

于 2012-07-23T18:06:46.517 回答