2009-09-04 134 views
31

我有一個下拉列表,其中有幾個選項用於生成報告。根據帳戶的類型,用戶具有某些應該可見但不可選擇的選項(作爲他們升級的激勵)。使下拉列表項無法選擇

我想知道是否有人知道一種方法來實現這一點。

權限已經存在,我只需要幫助使某些項目不可選。

任何幫助將不勝感激。

肖恩

回答

53

不知道你是否仍在尋找這個答案?

Mark Redman's answer很好,如果你可以在aspx頁面中定義選擇列表,但是如果動態綁定下拉列表顯然你不能。

我有成功使用以下實現的結果你後(不知道在整個瀏覽器的支持,但在IE瀏覽器的較新版本的作品)

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

這會使您禁用的元素變灰。

+0

我在'Page_Load'事件中添加了您的建議代碼,但是我希望被禁用的'ListItem'項目(選擇)仍然不會變灰。任何想法爲什麼? – 2015-07-19 08:32:32

+0

它是否禁用該項目?如果是這樣,它可能是需要調整的樣式? – 2015-07-19 13:37:29

+2

您需要在下拉列表控件的數據綁定事件處理程序中添加代碼。 – 2015-07-20 15:29:19

2

您可以使用所需的字段校驗和的初始值屬性設置爲項的下拉列表中你不想選擇的值。

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

您可以在客戶端執行一個處理程序,該處理程序在選擇某個項目時觸發。然後取消選擇該項目和/或顯示錯誤消息。

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> 
+0

如何做到這一點在ASP.NET ? – 2015-07-19 09:25:25

+0

我不必爲此編寫代碼! :-) – 2017-02-05 09:13:25

-3

試試這個

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

這將禁用項目從基本上不是在列表中顯示它。

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

+1

他希望禁用的元素僅僅是不可選的,所以不確定這是否可行。 – 2010-02-02 16:45:59

3

我有這個相同的問題,並試圖使用第一個答案張貼,但它沒有爲我工作。然後,我將第一篇文章更改爲:

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

它對我很有用。

+5

該方法從列表中刪除元素,但不會將其禁用。所以它不回答這篇文章中的最初問題。 – 2013-06-11 10:37:23

-1

如果這是HTML控件,那麼它很容易讓它變得不可取。只需使用「optgroup」HTML元素即可。例如

<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)的

感謝 蘇希爾Jinder

+3

這不是'optgroup'的用途。 – You 2011-06-28 12:02:56

1

你可以試試這個

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