触发TextBox onkeyup事件时填充列表框

时间:2014-02-08 16:29:17

标签: c# textbox listbox onkeyup

我有一个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;
}

0 个答案:

没有答案