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>

jqueryで簡単に見つけられるように、テキストボックスにcssクラスを追加しました。

$(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: 上記のコードは機能するはずです。

于 2013-09-13T10:59:27.483 に答える