2009-09-04 18 views
31

Tôi có danh sách thả xuống có một số tùy chọn để tạo báo cáo. Dựa trên loại tài khoản, người dùng có các tùy chọn nhất định sẽ hiển thị nhưng không thể chọn được (như là một khuyến khích để họ nâng cấp).làm cho mục danh sách thả xuống không thể chọn được

Tôi đã tự hỏi liệu có ai biết cách để thực hiện việc này không.

Các quyền đã được đặt ra, tôi chỉ cần trợ giúp với việc tạo một số mục không thể chọn.

mọi trợ giúp sẽ được đánh giá cao.

shawn

Trả lời

53

Bạn không chắc chắn liệu mình có đang tìm kiếm câu trả lời cho điều này không?

Mark Redman's answer là tuyệt vời nếu bạn có thể xác định danh sách lựa chọn trong trang aspx, tuy nhiên nếu bạn ràng buộc danh sách thả xuống tự động rõ ràng bạn không thể.

tôi đã thành công bằng cách sử dụng sau đây để đạt được kết quả mà bạn đang theo đuổi (không chắc chắn về việc hỗ trợ trình duyệt đầy đủ nhưng làm việc trong các phiên bản mới hơn của IE)

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

Điều này sẽ làm cho các yếu tố tàn tật của bạn màu xám.

+0

Tôi đang thêm mã được đề xuất của bạn vào sự kiện 'Page_Load' nhưng mục' ListItem' (Chọn) mà tôi muốn vô hiệu hóa vẫn không chuyển sang màu xám. Bất kỳ ý tưởng tại sao? –

+0

Ứng dụng có vô hiệu hóa mục này không? Nếu nó có thể là phong cách cần điều chỉnh? –

+2

Bạn cần thêm mã trong trình xử lý sự kiện dữ liệu để kiểm soát danh sách thả xuống. –

2

Bạn có thể sử dụng một validator trường bắt buộc và thiết lập thuộc tính giá trị ban đầu với giá trị của các mục trong danh sách thả xuống bạn không muốn lựa chọn.

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

Bạn có thể thực hiện điều này với trình xử lý được kích hoạt khi một mục được chọn. Sau đó, bỏ chọn mục và/hoặc hiển thị thông báo lỗi.

16

Bạn có thể vô hiệu hóa thẻ <option> trong một html <select>

Xem: http://www.htmlref.com/reference/appa/tag_option.htm

trong 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

Làm thế nào để làm điều đó trong ASP.NET ? –

+0

tôi không phải viết mã cho điều này !! :-) –

-3

Hãy thử điều này

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

này sẽ vô hiệu hóa mục từ danh sách bởi về cơ bản không hiển thị nó trong danh sách.

"ReportValue" = giá trị của mục cần tắt.

+1

Anh ấy muốn các thành phần bị vô hiệu hóa hiển thị chỉ không thể chọn, vì vậy không chắc chắn điều này sẽ hoạt động. –

3

Tôi đã gặp vấn đề tương tự này và cố gắng sử dụng câu trả lời đầu tiên được đăng, nhưng nó không hiệu quả đối với tôi. Sau đó tôi đã thay đổi bài đăng đầu tiên thành:

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

và nó làm việc cho tôi.

+5

Cách tiếp cận này sẽ xóa phần tử khỏi danh sách và không tắt nó. Vì vậy, nó không trả lời câu hỏi đầu tiên trong bài viết này. –

-1

Nếu đây là điều khiển HTML, thì rất dễ dàng để làm cho nó không thể chọn được. chỉ cần sử dụng phần tử HTML "optgroup" HTML. ví dụ.

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

(Chú ý: này hoạt động ở cả IE/firefox)

Cảm ơn Sushil Jinder

+3

Đây không phải là những gì 'optgroup' là cho. – You

1

Bạn có thể thử này

myDropDownList.Items.FindByValue("ReportValue").Attributes.Add("disabled", "disabled"); 
Các vấn đề liên quan