如何阻止 ASP.NET CheckboxList 在没有项目时删除自身?

问题描述 投票:0回答:1

我有一个CheckBoxList,其项目是动态更新的。如果所有项目都从列表中删除,整个列表就会完全消失,包括与之相关的 CSS,这会弄乱我的布局。我什至在网络开发者控制台中没有看到它的任何痕迹。我仍然希望该列表保留下来,无论它是否为空。

如何保留 CheckBoxList,即使它没有任何项目?

c# asp.net user-interface checkbox checkboxlist
1个回答
0
投票

好吧,如果你设置一个控件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

然后我得到这个结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.