实际上这样的控件有点不伦不类了,如果没有强烈的需求还是不要用的为好。
借用AjaxControlToolkit的ComboBox实现即可选择又可输入的,同时具有下拉框和文本框功能的控件。
实现中仍有不足,需要大家自己根据自己需求改进。
页面代码
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="CustomCombo.ascx.vb" Inherits="UketukeWeb.CustomCombo" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<div>
<asp:ComboBox ID="ComboBox1" runat ="server" Width="100px" Height="15px" CssClass="combobox" ClientIDMode="AutoID"
AutoCompleteMode ="SuggestAppend"
AutoPostBack="false"
DropDownStyle="DropDownList"
CaseSensitive="False"
>
</asp:ComboBox>
<asp:HiddenField ID="ItemCount" runat="server" Value="0" ClientIDMode="AutoID"/>
<asp:HiddenField ID="ComboHiddenText" runat="server" Value="" ClientIDMode="AutoID"/>
<asp:HiddenField id="ComboHiddenValue" runat="server" Value="" ClientIDMode="AutoID"/>
</div>
脚本代码
<script language="javascript" type="text/javascript">
$(document).ready(function () {
var combobox = $('#<%=ComboBox1.ClientID %>');
var indexHidden = $('#<%=ComboBox1.ClientID %>_HiddenField');
var tag = $("#<%=Me.ID %>");
$('#<%=ComboBox1.ClientID %> button').attr("tabindex", "-1");
//$('#<%=ComboBox1.ClientID %> table').css("position", "static");
$('#<%=ComboBox1.ClientID %> table').css("top", "1px");
combobox.find("input:text").addClass(" text");
//$('#<%=ComboBox1.ClientID %> ul').click(function () {
// $(this).hide();
//});
if ("<%=Me.ImeMode %>") {
combobox.find("input:text").addClass(" ime<%=Me.ImeMode %>");
} else {
combobox.find("input:text").addClass(" imeOff");
}
if (eval("<%=Me.Items.Count = 0 %>".toLocaleLowerCase())) {
combobox.find("input:text").val("");
}
if ("<%=Me.MustInput %>") {
tag.SetMustInput("<%=Me.MustInput %>");
var textbox = combobox.find("input:text");
if (textbox.attr("ReadOnly") != "readonly" && textbox.attr("disabled") != "disabled") {
textbox.attr("MsgTitle", "<%=Me.MsgTitle %>");
}
}