1

我的要求是我有列表框和可用的文本框顶部。当用户来搜索列表框项目时,用户将输入文本框。

这里我的代码是

<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

干杯

4

3 回答 3

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);
});
});

编辑3:上面的代码应该可以工作。

于 2013-09-13T10:59:27.483 回答
0

onKeyDown="Search()"正在寻找JavaScript功能Search

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

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

你可以使用类似的东西jQuery autocomplete

于 2013-09-13T10:35:56.230 回答
0
<asp:textbox id="txtBOX1" runat="server" OnTextChanged="txtbox1_TextChanged()" AutoPostBack=true/>

这应该可以工作.. 确保文本框控件的自动回发设置为 true

于 2013-09-13T10:37:45.543 回答