我有一个CheckBoxList,其项目是动态更新的。如果所有项目都从列表中删除,整个列表就会完全消失,包括与之相关的 CSS,这会弄乱我的布局。我什至在网络开发者控制台中没有看到它的任何痕迹。我仍然希望该列表保留下来,无论它是否为空。
如何保留 CheckBoxList,即使它没有任何项目?
好吧,如果你设置一个控件visible = false,那么它当然永远不会被渲染或发送到客户端。
但是,对于 GridView,则可以在没有发送数据时设置 xxxx = xxxx。
复选框列表也是如此。
说出这个标记:
<style>
.chkboxes input {margin-right:10px;
width:20px;
height:20px;
cursor:pointer;
display:inline;
}
.chkboxes label {margin-right:20px;
white-space:nowrap;
font-size:18px;
}
.chkboxes span {display:inline;white-space:nowrap}
</style>
<h3>Select Hotels</h3>
<asp:CheckBoxList ID="ckHotels" runat="server"
RenderWhenDataEmpty="True"
RepeatLayout="Flow"
DataValueField="ID"
DataTextField="HotelName"
RepeatDirection="Vertical"
CssClass="chkboxes"
>
</asp:CheckBoxList>
请注意,如果您使用 RenderWhenDataEmpty="True",则必须使用 RepeatLayout="Flow",因为当empty = true 时,渲染不支持表格布局。
所以,背后的代码可能是这样的:
子加载复选框()
Dim strSQL As String =
"SELECT ID, HotelName FROM tblHotelsA WHERE ID = 0
ORDER BY HotelName"
ckHotels.DataSource = MyRst(strSQL)
ckHotels.DataBind()
结束子
对于上面的内容,当然不会返回任何行,但会向客户端发送一个“span”。
使用此代码:
Sub LoadCheckbox()
Dim strSQL As String =
"SELECT ID, HotelName FROM tblHotelsA
ORDER BY HotelName"
ckHotels.DataSource = MyRst(strSQL)
ckHotels.DataBind()
End Sub
然后我得到这个结果: