2010-05-25 50 views
5

Tôi đang làm việc với một điều khiển DropDownList tùy chỉnh trong ASP.Net và có yêu cầu hiển thị một số mục trong danh sách với một kiểu chữ đậm - điều khiển kế thừa từ CompositeDataBoundControl để nó có thể bị ràng buộc dữ liệu ... chứ không phải DropDownListBox). Điều khiển được liên kết với một bảng và có một cột trong bảng có tên IsUsed - nếu điều này được đặt thành true, mục tương ứng trong danh sách sẽ được in đậm. (Cần lưu ý ở đây rằng điều này sẽ chỉ được xem trong FireFox.)Làm thế nào để thực hiện điều khiển DropDownList hiển thị một số mục in đậm ASP.NET

Kinh nghiệm của tôi là tất cả ở tầng giữa để lớp trình bày rất mới đối với tôi - ai đó có thể chỉ cho tôi đúng hướng không? Suy nghĩ ban đầu của tôi là ở đâu đó trong điều khiển tùy chỉnh, tôi sẽ có quyền truy cập vào tất cả các hàng được trả về từ nguồn dữ liệu mà tôi có thể chuyển qua ... nhưng tôi không chắc liệu điều đó có khả thi hay không. ... trông có vẻ thú vị!

Trả lời

1

OK Tôi nghĩ rằng tôi đã trả lời câu hỏi của riêng tôi nhưng nó không có vẻ rất thanh lịch.

Tôi có thể viết một proc được lưu trữ mới để trả về dữ liệu tôi cần hiển thị trong danh sách sẽ trả về ID và DESCRIPTION. Tuy nhiên, mô tả sẽ là mô tả cộng với TRUE hoặc FALSE (tùy thuộc vào cờ được sử dụng trong bảng). Sau đó, trong RenderContents tôi có thể chia chuỗi mô tả, phân tích cú pháp bool và thêm một thuộc tính style làm cho văn bản in đậm nếu bool là đúng ...

+0

Tôi muốn tách riêng các mô tả của chúng ta và các trường IsUsed và sau đó bạn sẽ không cần chia chuỗi trong RenderContents. ** Bạn không muốn lớp dữ liệu của bạn lo lắng về bản trình bày **. Có lý do nào mà bạn không thể có trường thứ ba được trả lại không? – earthling

+0

Đó là mã trong điều khiển tùy chỉnh tách chuỗi nhưng tôi thấy điểm của bạn. Tôi chỉ không biết đủ về ràng buộc dữ liệu - vì vậy nó không quan trọng bao nhiêu lĩnh vực SP của tôi trở lại, bởi vì tôi chỉ có thể chọn và chọn những gì để làm với họ trong danh sách thả xuống mã chính xác? Tôi sẽ cung cấp cho nó một đi khi tôi đang ở trong văn phòng vào ngày mai, chắc chắn thanh lịch hơn so với một chuỗi phân định! –

+0

Không giống như tôi có thể làm theo cách này ... Trong RenderContents tôi dường như chỉ có quyền truy cập vào thuộc tính Items của ddl - các mục chỉ có mô tả và id được trả về từ proc được lưu trữ, trường thứ 3 mà tôi vừa thêm vào là làm ngơ... –

1

Bất kể điều khiển bạn đang sử dụng ở phía máy chủ, nó sẽ được hiển thị dưới dạng html trong trình duyệt của khách hàng và danh sách thả xuống html chuẩn không hỗ trợ tạo kiểu cho nội dung của nó. Thay vì làm điều này, bạn có thể sử dụng các điều khiển danh sách thả xuống tùy chỉnh JavaScript hoặc jQuery.

+0

Vì vậy, tôi có thể nhận được dữ liệu hay không là bất kể vào lúc này vì nếu tôi áp dụng một số loại phong cách cho nội dung nó sẽ không có hiệu lực? –

+1

giải pháp của abatishchev hoạt động nếu bạn muốn làm cho mục nhập cụ thể với phông chữ đậm. Nhưng nếu bạn muốn thay đổi một phần văn bản, sau đó nó không thể được thực hiện bằng cách sử dụng điều khiển phía máy chủ. – Elangovan

+0

Tôi nghĩ điều này phụ thuộc vào cách văn bản hiển thị - nó trông như thế nào trong HTML thô. Nếu bạn có thể sử dụng đánh dấu HTML như một văn bản bên trong của điều khiển - hơn bạn, có lẽ, sẽ có thể làm cho đậm một văn bản cụ thể. I E. nó sẽ giống như thế này: ' My đặc biệt văn bản ' – abatishchev

3

Dưới đây là làm thế nào để làm những gì bạn cần trong code-behind:

var item = new ListItem("MyItem"); 
item.Attributes.Add("style", "font-weight: bold"); 

var list = FindControl("DropDownList1"); 
list.Items.Add(item); 

Bất kỳ kiểm soát được kế thừa từ System.Web.UI.Control có tài sản Attributes mà bạn có thể sử dụng để thêm hoặc thêm style thuộc tính.

+0

OK để quay lại phương thức RenderContents của điều khiển của tôi ... chắc chắn kết quả đầu ra HTML này cho mỗi mục trong danh sách? Do đó dựa trên những gì bạn đã nói tôi sẽ có thể áp dụng một phong cách cho từng mục riêng lẻ? –

+0

Bất kỳ điều khiển phía máy chủ nào cũng trở thành HTML sau khi kết xuất. Vì vậy, bạn có thể áp dụng bất kỳ phương thức/công cụ/phương pháp HTML thích hợp nào cho nó – abatishchev

Các vấn đề liên quan