2013-04-29 40 views
5

Tôi đang tìm cách tốt nhất để đặt chiều rộng của danh sách thả xuống KendoUI - thông qua Trình trợ giúp HTML Kendo.KendoUI Đặt chiều rộng của danh sách thả xuống

@(Html.Kendo().DropDownList() 
    .Name("ddlAccount") 
    .DataTextField("Name") 
    .DataValueField("Id") 
    //This doesn't work, it styles the hidden input instead of the ddl 
    .HtmlAttributes(new {style="width:200px;"}) 
) 

Tôi đang thiết lập chiều rộng của DropDownList, nhưng thông báo trong HTML được tạo ra, chiều rộng là 200 pixel được đặt trên một đầu vào văn bản ẩn, không phải là DropDownList:

<span aria-busy="false" aria-readonly="false" aria-disabled="false" aria-owns="ddlAccount_listbox" tabindex="0" aria-expanded="false" aria-haspopup="true" role="listbox" class="k-widget k-dropdown k-header styled_select" style="" unselectable="on" aria-activedescendant="ddlAccount_option_selected"> 

<span class="k-dropdown-wrap k-state-default"> 
    <span class="k-input">Choice One</span> 
    <span class="k-select"> 
     <span class="k-icon k-i-arrow-s">select</span> 
    </span> 
</span> 
<input id="ddlAccount" name="ddlAccount" style="width: 200px; display: none;" type="text" data-role="dropdownlist"> 

.. Do đó DropDownList kết quả vẫn cuộn cả theo chiều ngang và chiều dọc, mà tôi không muốn.

Trả lời

10

@Html.Kendo().DropDownList().HtmlAttributes(new { style = "width:300px" }) trên máy chủ làm việc bên cho tôi và tài liệu trên http://docs.kendoui.com/. Có thể không quá lâu.

2

Với js, từ trang Kendo:

// get reference to the DropDownList 
var dropdownlist = $("#size").data("kendoDropDownList"); 
// set width of the DropDownList 
dropdownlist.list.width(500); 

JsFiddle

+0

Điều đó có hiệu quả, nhưng tôi đang tìm cách đặt chiều rộng qua Trình trợ giúp HTML KendoUI phía máy chủ – DShultz

+0

Thực tế vấn đề là mã xung đột trong trang đã khiến Kendo không nhận ra mã ddl/span. Tôi xấu, nhưng câu trả lời phía khách hàng của bạn không hoạt động, vì vậy tôi sẽ cung cấp cho bạn tín dụng. – DShultz

+0

Người trợ giúp HTML không phải là phía máy chủ. Chúng chỉ là các phím tắt để viết javascript. Một giải pháp phía máy chủ có nghĩa là máy chủ thực hiện tác vụ, điều này không có ý nghĩa gì nếu bạn nói về ảnh hưởng đến giao diện người dùng. Trừ khi bạn thực hiện một số kết nối SignalR/Socket điên từ nơi máy chủ của bạn có thể chạy javascript trên máy khách của bạn .............: D – Pluc

1

Chỉ cần nghĩ rằng tôi muốn thêm vào điều này vì nó đã giúp tôi ...

Nếu bạn muốn áp dụng một cái gì đó mà kéo dài chiều rộng của Danh sách vượt quá chiều rộng của đầu vào, bạn có thể làm điều này bằng cách sử dụng Bộ chọn jQuery và một lớp css.

lưu ý: đây là cho ComboBox, nhưng nên làm việc tốt như nhau với DropDownList

Vì vậy, bạn thêm này

@(Html.Kendo().ComboBoxFor(m => m.UserId) 
     ... 
     .HtmlAttributes(new { @class = "wideList" }) 
    ) 

Sau đó thêm một đoạn Javascript mà thực hiện điều này:

$(document).ready(function() { 

$("input[data-role=\"combobox\"].wideList").each(function() { 
    var combo = $(this).data("kendoComboBox"); 
    combo.list.width(400); 
}); 

}); 

Để tiến thêm một bước nữa, bạn thực sự có thể làm cho nó trở nên chung chung hơn bằng cách cho phép chiều rộng được chỉ định khi xác định menu thả xuống:

@(Html.Kendo().ComboBoxFor(m => m.UserId) 
    ... 
    .HtmlAttributes(new { @class = "wideList", listWidth = "400" }) 
) 

Sau đó javascript chung chung hơn của:

$(document).ready(function() { 
    $("input[data-role=\"combobox\"].wideList").each(function() { 
    var combo = $(this).data("kendoComboBox"); 
    var width = $(this).attr('listWidth'); 
    combo.list.width(width); 
    }); 
}); 
0

Ở đây bạn đi:

$("#Dropdopwnlist").kendoDropDownList().parent().css("width", "200%"); 

đơn giản và nó làm việc cho tôi sau khi trải qua một giờ!

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