使下拉列表项无法选择

时间:2009-09-04 13:06:01

标签: asp.net drop-down-menu

我有一个下拉列表,其中包含多个生成报告的选项。根据帐户类型,用户具有某些应该可见但不可选择的选项(作为他们升级的动机)。

我想知道是否有人知道如何实现这一目标。

权限已经到位我只需要帮助使某些项目无法选择。

非常感谢任何帮助。

9 个答案:

答案 0 :(得分:55)

不确定您是否仍在为此寻找答案?

Mark Redman's answer非常棒,如果你可以在aspx页面中定义选择列表,但是如果你动态地绑定下拉列表,你就不能。

我成功使用以下内容来实现您所追求的结果(不确定完全支持浏览器,但适用于较新版本的IE)

foreach ( ListItem item in dropdownlist.Items )
{
    if ( [item should be disabled condition] )
    {
        item.Attributes.Add( "disabled", "disabled" );
    }
}

这会使您的已禁用元素变灰。

答案 1 :(得分:16)

您可以在html <option>

中停用<select>标记

请参阅:http://www.htmlref.com/reference/appa/tag_option.htm

在asp.net中:

<asp:DropDownList ID="MyDropDownList" runat="server">
        <asp:ListItem Text="Standard Report" Value="SR"></asp:ListItem>
        <asp:ListItem Text="Enterprise Report" Value="ER" disabled="disabled"></asp:ListItem>
    </asp:DropDownList>

答案 2 :(得分:2)

您可以使用必填字段验证程序,并将初始值属性设置为您不希望选择的下拉列表中的项目值。

<asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server"
                        ErrorMessage="" ControlToValidate="DropDown" InitialValue="Unselectable Item"></asp:RequiredFieldValidator>

答案 3 :(得分:2)

我遇到了同样的问题并尝试使用发布的第一个答案,但它对我不起作用。然后我将第一篇文章改为:

foreach ( ListItem item in dropdownlist.Items )
{
  if ( [item should be disabled contdition] )
  {
     item.Enabled = false;
  }
}

它对我有用。

答案 4 :(得分:2)

你可以试试这个

myDropDownList.Items.FindByValue("ReportValue").Attributes.Add("disabled", "disabled");

答案 5 :(得分:1)

亚当·福克斯(Adam Fox)的这段代码绝对正确:

foreach ( ListItem item in dropdownlist.Items )
{
    if ( [item should be disabled condition] )
    {
        item.Attributes.Add( "disabled", "disabled" );
    }
}

唯一的警告是,需要在 OnDataBound 事件中调用它,而不是在OnDataBinding事件中调用(这在生命周期中还为时过早)。

答案 6 :(得分:0)

您可以使用在选择项目时触发的处理程序来执行此客户端操作。然后取消选择该项目和/或显示错误消息。

答案 7 :(得分:-1)

如果这是HTML控件,那么很容易让它无法选择。只需使用“optgroup” HTML元素即可。 e.g。

<select>
<optgroup label="Hardware"></optgroup>
<option id="1">mouse</option>
<option id="2">keyboard</option>
<option id="3">monitor</option>
<optgroup label="Software"></optgroup>
<option id="Option1">windows XP</option>
<option id="Option2">MS Office</option>
<option id="Option3">VStudio</option>
</select>

(注意:这适用于IE / firefox)

由于 Sushil Jinder

答案 8 :(得分:-3)

试试这个

myDropDownList.Items.FindByValue("ReportValue").Enabled = false;

这将禁止列表中的项目,基本上不会在列表中显示它。

"ReportValue" =要禁用的项目的值。