【问题标题】:dropdownlist to combobox下拉列表到组合框
【发布时间】:2011-07-28 14:15:00
【问题描述】:

我正在寻找将 DropDownList 转换为 ComboBox 的简单控件或 jQuery 插件。

我目前正在使用 Ajax 组合框,我已经受够了。我试图使组合框的宽度为 100%,当从组合框调整为所选列表项宽度的列表中选择一个项目时,它们的布局总是搞砸了。

标准的 asp.net DropDownList 可以正常工作并且没有任何这些问题,但是我需要 ComboBox 的自动完成功能。

是否有 jQuery 插件或任何类似的东西我可以调用 document.ready 将标准 asp.net 下拉列表转换为 ajax 组合框样式组合?

到目前为止的代码:

<script src="../../JavaScripts/jquery.min.js" type="text/javascript"></script>
<script src="../../JavaScripts/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">

    $(document).ready(function () {
        $('#<%=ddlProjectCode.ClientID %>').combobox();
        alert('test');
    });

</script>

等:

 <asp:DropDownList ID="ddlProjectCode" runat="server" AppendDataBoundItems="True" AutoCompleteMode="SuggestAppend"
                                AutoPostBack="True" DropDownStyle="DropDownList" RenderMode="Block" Width="100px"
                                OnSelectedIndexChanged="ddlProjectCode_SelectedIndexChanged" CssClass="comboBoxInsideModalPopup">
                            </asp:DropDownList>

但现在我得到了错误:

对象不支持方法'combobox'的这个属性

【问题讨论】:

    标签: jquery asp.net combobox drop-down-menu


    【解决方案1】:

    我在几个项目中为此使用了jqueryui combobox

    我只是从该示例中复制了脚本,并对它进行了一些特定于项目的更改。

    对于 100% 的宽度,您可以尝试如下操作:http://jsfiddle.net/KnBpt/

    比Ajax控件工具包版本好很多,它甚至可以在你键入部分名称时找到一个值,asp:Combobox只有在它以你的值开头时才找到它。

    要在键入值时使 AutoPostback 起作用,您必须在原始选择元素上触发 .change():

    $('.ui-autocomplete-input').bind('autocompleteselect', function(){ 
        $(this).prev('select').change();
    });
    

    这会在每个 jqueryui 自动完成和组合框的值发生更改时触发 .change(),这将自动触发 AutoPostback(如果设置为 true),而无需知道 ClientID 或任何内容。

    【讨论】:

    • 谢谢,我现在想看看我是否可以直接用另一个控件更改一个控件,因为这是我所希望的。 $(document).ready(function () { $('#').combobox(); alert('test'); });
    • 我刚刚得到错误对象不支持方法'combobox'的这个属性我引用了以下脚本,我缺少什么?
    • 只要确保您加载了所有需要的脚本和样式并且它应该可以工作。 (它也适用于我的 asp.net 网站)您需要包含组合框自定义脚本,请参阅我的 jsfiddle 或 jqueryui 演示的源代码:$.widget("ui.combobox", {...});跨度>
    • 啊,所以我还必须包含所有自定义 javascript,而不仅仅是引用 2 个 jq 库并调用 .combobox()?这样做很简单 $('#dropdownlist').combobox();我正在寻找的
    • 它确实像 $('#dropdownlist').combobox() 一样工作。只需在另一个 .js 文件中加载额外的脚本并将其包含在所有其他脚本之后(因为它需要加载它们)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多