当我在Textbox中输入任何内容时,它应该在asp.net中触发?

时间:2013-09-13 10:32:57

标签: c# javascript asp.net

我的要求是我的列表框和该文本框的顶部可用。当用户来搜索listBox项时,用户将键入Textbox。

我的代码是

<asp:TextBox ID="txtSearch" runat="server" AutoPostBack="True" onKeyDown="Search()"></asp:TextBox>

C#代码是

public void Search(object sender, EventArgs e)
{
    string txtOrig = txtSearch.Text;
    var filter = listTypesFilter.Where(c => c.NAME.IndexOf(txtOrig, StringComparison.OrdinalIgnoreCase) >= 0);

    listTypes.DataSource = filter;
    listTypes.DataBind();

}

我已尝试使用AutoPostBackTrue进行txtSearch_TextChanged事件,当我输入内容并单击Tab时,它工作正常。但是现在我需要当用户在文本框中键入内容时自动过滤器应该显示。

如果没有AutoCompleteExtender

,我们将不胜感激任何帮助或建议

干杯

3 个答案:

答案 0 :(得分:1)

我想在后面的代码中过滤你必须做回发。对于我的解决方案,你需要jquery。你可以试试这个:

<asp:TextBox ID="txtSearch" runat="server" AutoPostBack="True" OnTextChanged="Search" CssClass="txt"></asp:TextBox>

我在文本框中添加了一个css类,可以使用jquery轻松找到它。

$(document).ready(function () {
        $('.txt').keyup(function () {
            $(this).change();
        });

编辑:您可以考虑使用更新面板“隐藏”回发或仅使用javascript进行过滤

edit2:等待输入结束的解决方法

    var timeoutReference;
$(document).ready(function() {
    $('txt').keypress(function() {
         var _this = $(this); // copy of this object for further usage

         if (timeoutReference) clearTimeout(timeoutReference);
         timeoutReference = setTimeout(function() {
          $('txt').change();
         }, 500);
});
});

edit3:上面的代码应该有效。

答案 1 :(得分:0)

onKeyDown="Search()"正在寻找JavaScript函数Search

您需要一个客户端功能,例如:

<script type="text/javascript">
   function Search() {
        alert('Searching');
   }
</script>

您可以使用jQuery autocomplete

之类的内容

答案 2 :(得分:0)

<asp:textbox id="txtBOX1" runat="server" OnTextChanged="txtbox1_TextChanged()" AutoPostBack=true/>

这应该有用.. 确保文本框控件的“自动回发后”设置为“