KendoUI 设置下拉列表的宽度

Posted

技术标签:

【中文标题】KendoUI 设置下拉列表的宽度【英文标题】:KendoUI Set width of dropdownlist 【发布时间】:2013-04-23 10:52:38 【问题描述】:

我正在寻找设置 KendoUI 下拉列表宽度的最佳方法 - 通过 Kendo html Helper。

@(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;")
)

我正在设置 DropDownList 的宽度,但请注意在生成的 HTML 中,200 像素的宽度是在隐藏文本输入上设置的,而不是下拉列表:

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

...所以生成的 DropDownList 仍然水平和垂直滚动,这是我不想要的。

【问题讨论】:

【参考方案1】:

@Html.Kendo().DropDownList().HtmlAttributes(new style = "width:300px" ) 在服务器端为我工作,并记录在 http://docs.kendoui.com/ 上。可能不会那么久。

【讨论】:

【参考方案2】:

使用js,来自剑道网站:

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

JsFiddle

【讨论】:

可以,但我希望通过服务器端 KendoUI HTML Helper 设置宽度 实际上问题是页面中的冲突代码导致 Kendo 无法识别 ddl/span 代码。我的错,但你的客户端答案确实有效,所以我会给你功劳。 HTML 助手不是服务器端的。它们只是编写 javascript 的快捷方式。服务器端解决方案意味着服务器执行任务,如果我们谈论影响 UI,这是没有意义的。除非你从你的服务器可以在你的客户端上运行 javascript 的地方建立一些疯狂的 SignalR / Socket 连接...... :D【参考方案3】:

只是想我会添加它,因为它确实对我有帮助......

如果您想应用将 List 的宽度扩展到输入宽度之外的东西,您可以使用 jQuery 选择器和 css 类来做到这一点。

注意:这是针对组合框的,但应该同样适用于下拉列表

所以你添加了这个

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

然后添加一段 Javascript 来执行此操作:

$(document).ready(function () 

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

);

更进一步,您实际上可以通过在定义下拉列表时指定宽度来使其更通用:

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

然后是更通用的javascript:

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

【讨论】:

【参考方案4】:

给你:

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

简单,花一个小时后它对我有用!

【讨论】:

以上是关于KendoUI 设置下拉列表的宽度的主要内容,如果未能解决你的问题,请参考以下文章

KendoUI 级联下拉列表,需要来自 2 个下拉列表的值。

禁用 KendoUI 下拉列表选项

KendoUI - 使用 MVVM 和远程数据时的级联下拉列表

设置剑道 ui 下拉列表宽度

scss 关闭按钮KendoUI的位置(下拉列表,组合框)

下拉框设置下拉列表宽度