我有一个TextBox,我应该进入一个城市的开头。当输入至少3个字符时,我从数据库(所有名称以输入的字符串开头的城市)中检索可能的列表,并填充可能的列表框。然后我希望能够从下面的列表框中进行选择,并将完整的名称放在TextBox中。
所以我找到了一种在onkeyup事件发生时触发OnTextChanged TextBox事件的方法,我可以填充我的ListBox。当我单击列表框项时,将再次触发相同的事件(来自TextBox),并且从列表框中的OnSelectedIndexChanged永远不会被触发。请参阅下面的代码。
<script type="text/javascript">
function RefreshUpdatePanel(txt) {
if (txt.value.length >= 3) {
__doPostBack('<%= TextBoxCity.ClientID %>', '');
}
};
</script>
<asp:TextBox ID="TextBoxCity" Width="185px" onkeyup="RefreshUpdatePanel(this);" OnTextChanged="TextBoxCity_TextChanged" runat="server" ></asp:TextBox><br />
<asp:ListBox runat="server" Width="185px" ID="Cities" AutoPostBack="true" OnSelectedIndexChanged="Cities_SelectedIndexChanged" ></asp:ListBox>
// this one fires when selecting entry in listbox
protected void TextBoxCity_TextChanged(object sender, EventArgs e)
{
// load cities and populate listbox....
}
// I expect this one to fire when selecting entry in listbox
protected void Cities_SelectedIndexChanged(object sender, EventArgs e)
{
TextBoxCity.Text = Cities.Text;
}