当ASP.NET下拉列表为空时隐藏下拉框

时间:2013-10-24 15:15:31

标签: asp.net

因为我将一个asp:dropdownlist和一个asp:checkboxlist结合起来,我在IE(8)和Firefox(Chrome工作正常)中遇到问题,每当我点击DropDownList时,除了我手动弹出窗口外,还出现空框单击下拉列表时打开。

我现在的问题是:如何隐藏这个空框(因为其中没有条目),但保留下拉元素?我不想替换这个组件,因为它仍然应该看起来像一个下拉列表。如果我将其更改为文本框,则不再清楚它是否可以用作下拉列表。

这就是我目前所拥有的:

<div style="width: 190px;" class="right">
    <!-- the original drop down list -->
    <asp:DropDownList CssClass="dropdownbox" ID="ddlCountry" runat="server">
    </asp:DropDownList>
    <cc1:PopupControlExtender ID="ddlCountry_PopupControlExtender" runat="server" DynamicServicePath=""
        Enabled="True" ExtenderControlID="" TargetControlID="ddlCountry" PopupControlID="pnlPopup"
        OffsetY="20">
    </cc1:PopupControlExtender>
    <!-- Popup control extender that maps the country list to the dropdown list -->
    <asp:Panel ID="pnlPopup" runat="server" CssClass="dropdowncheckbox">
        <!-- List of countries with a checkbox for each entry -->
        <asp:CheckBoxList ID="countryList" runat="server" 
            DataTextField="Countries" DataValueField="Countries" AutoPostBack="True"
            OnSelectedIndexChanged="countryList_SelectedIndexChanged">
        </asp:CheckBoxList>
    </asp:Panel>
</div>

如果有更适合我目的的组件,请告诉我。 非常感谢您的建议。

4 个答案:

答案 0 :(得分:1)

将此代码放在需要触发更改的事件中 这适用于c#

if(dropdownlist.Items.Count == 0)
{
dropdownlist.Attributes["style"] = "display: none;";
}
else
{
dropdownlist.Attributes["style"] = "";
}

答案 1 :(得分:0)

只需将Drop Down List Enabled属性设置为false,并在有条目时将其切换为true。

dropdownbox.Enabled = false;

答案 2 :(得分:0)

将下拉列表封装为div,给div一个id和runat =“server”

检查数据后面的代码,加载下拉列表是空的,如果不将div设置为可见,则将div设置为可见false。

希望有所帮助

答案 3 :(得分:0)

在c#中执行类似的操作:

if(dropdownlist.Items.Count == 0)
{
      dropdownlist.Visiable = false;
}
else
{
      dropdownlist.visable = true;
}
相关问题