我正在寻找一个将DropDownList转换为ComboBox的简单控件或jQuery插件。
我目前正在使用Ajax Combo Box,我刚才已经足够了。我试图使组合框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>
但现在我收到了错误:
object不支持方法'combobox'的这个属性
答案 0 :(得分:2)
我在几个项目中使用jqueryui combobox。
我只是从该示例中复制了脚本,并对其进行了一些项目特定的更改。
对于100%宽度,您可以尝试这样的事情:http://jsfiddle.net/KnBpt/
比Ajax控件工具包版本工作得更好,它甚至可以在你输入名称的一部分时找到一个值,asp:Combobox只有在它以你的值开头才能找到它。
要在键入值时使AutoPostback工作,您必须在原始select元素上触发.change():
$('.ui-autocomplete-input').bind('autocompleteselect', function(){
$(this).prev('select').change();
});
这会在每个jqueryui自动完成和组合框的值发生变化时触发.change(),并且会自动触发AutoPostback(如果设置为true),而不知道ClientID或其他内容。