2010-09-24 36 views
7

Tôi có một dijit.form.Select được tạo lập trình. Không giống như hầu hết các tiện ích con khác, Bộ chọn không cung cấp phương thức thay đổi kích thước nhưLàm cách nào để đặt chiều rộng của dijit.form.Select?

dijit.resize({w: width, h: height}); 

Tôi chưa tìm thấy cách thiết lập chiều rộng của một lựa chọn. Điều này là khá xấu vì việc tự động hóa làm cho Hộp thoại "phát nổ" trên các giá trị chọn dài.

Có cách nào tiêu chuẩn để thay đổi kích thước lựa chọn tôi đã bỏ lỡ không? Hay tôi có mớ hỗn độn với việc đánh dấu chọn đường khó?

Cảm ơn!

Trả lời

3

Tại sao bạn sẽ không chỉ đơn giản là thực hiện điều này bằng cách thiết lập phong cách của widget?

http://jsfiddle.net/QEjYD/1/

Thật không may, do cách widget được viết, này không công việc nếu bạn treo lên các chiều rộng trong một lớp học CSS, hoặc nếu bạn thiết lập độ rộng phong cách sau widget có đã được tạo.

+0

Cảm ơn bạn! Đó thực sự là vấn đề: Tôi cần phải thay đổi kích thước lựa chọn SAU KHI widget đã được tạo. Đã không nhận thức được thực tế là nó hoạt động trước khi sáng tạo. –

+0

@ken Điều này tạo ra một chiều rộng cố định mặc dù phải không? Im đấu tranh với thiết lập một chiều rộng 'tối đa'. Nếu người dùng chọn 'tùy chọn 2', tôi muốn chọn là 150px nếu họ chọn 'sdfsdfsdfds fdsfdsdfdasf asfasdfadsf adsfasf' Lựa chọn phải cắt ngắn tối đa 450px. Tôi đã thực hiện điều này bằng cách sử dụng css nhưng IE8 có một lỗi ẩn và chiều rộng tối đa - vì vậy đối với ie8 tôi có một số js để thay đổi kích thước nó với giải pháp js là chọn 'nhấp nháy' đến một vị trí khác trước khi js có thể thay đổi kích thước nó. Nếu một giá trị ngắn được chọn thì một giá trị dài sẽ có đèn flash của lựa chọn ở vị trí sai. Sửa lỗi Ugly. – maehue

+2

@MigoFast: Câu trả lời của Ken không thực sự hiệu quả khi bạn bắt đầu thử thêm các tùy chọn. (Xem http://jsfiddle.net/QEjYD/568/) Câu trả lời của James dưới đây, tuy nhiên. Xem http://jsfiddle.net/QEjYD/569/ – inanutshellus

1

Tôi sẽ sử dụng

dojo.marginBox(selectWidget.domNode, {w: width, h:height}) 
+0

Cảm ơn câu trả lời! Đã thử rằng đã có, nhưng mà vít lên dijit chọn (mũi tên thả xuống bên phải điền vào chiều rộng bổ sung, giá trị lựa chọn thực vẫn tự động như trước). Đoán tôi sẽ phải sửa đổi nó một cách khó khăn, cảm ơn anyway! –

9

này có thể đạt được với CSS bằng cách thiết lập độ rộng của nhãn bên trong như thế này:

.tundra .dijitSelect .dijitButtonText { 
    text-align: left; 
} 

.tundra .dijitSelectLabel { 
    width: 120px; 
    overflow: hidden; 
} 
+1

Nếu tôi muốn đặt chiều rộng thành 100% thì sao? hoặc điều gì xảy ra nếu tôi muốn đặt chiều rộng rộng bằng thành phần chính của nó? 'chiều rộng: 100%;' không hoạt động, bất kỳ ý tưởng làm thế nào để thiết lập nó trong trường hợp này? – Mai

0

thử này

.dijitSelect .dijitButtonNode { 
    width: 16px !important; 
} 

dom-style.set(dojo.query('.dijitSelect')[0], 'width', with); 
3

Cho phong cách để constructor:

var mySelect = new Select({ 
     id: 'mystatus', 
     name: 'mystatus', 
     style: {width: '150px'}, 
     required : false, 
     store: os, 
     searchAttr: 'label', 
    }, "mystatus"); 
Các vấn đề liên quan