我有一个下拉列表,其中包含多个生成报告的选项。根据帐户类型,用户具有某些应该可见但不可选择的选项(作为他们升级的动机)。
我想知道是否有人知道如何实现这一目标。
权限已经到位我只需要帮助使某些项目无法选择。
非常感谢任何帮助。
答案 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"
=要禁用的项目的值。