У меня есть код ниже (упрощенный для тестирования):
<asp:TextBox ID="search_TB" runat="server" AutoPostBack="true" OnTextChanged="search_TB_TextChanged"></asp:TextBox>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="up" runat="server">
<Triggers><asp:AsyncPostBackTrigger ControlID="search_TB" /></Triggers>
<ContentTemplate>
<asp:ListView ID="lv" runat="server">
<ItemTemplate>
<div class="text-danger"><%# Eval("name") %></div>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
Я пытаюсь асинхронно обновлять ListView при изменении текста в TextBox.Я ищу, я пытаюсь очень долго, но нет хорошего источника.Не могли бы вы, ребята, помочь мне?
Что дальше?OnTextChanged ничего не делает, кроме полного обновления, если AutoPostBack имеет значение true:
protected void search_TB_TextChanged(object sender, EventArgs e)
{
List<Food> foods = SqlChannel.ListFood().Where(x => x.name.ToLower().Contains(search_TB.Text.ToLower())).ToList();
lv.DataSource = foods;
lv.DataBind();
}
}
Я также не могу сделать асинхронную Page_Load:
if (!IsPostBack)
{
List<Food> foods = SqlChannel.ListFood().Where(x => x.name.ToLower().Contains(search_TB.Text.ToLower())).OrderBy(x => x.name).ToList();
lv.DataSource = foods;
lv.DataBind();
}
Еще одна вещь: было бы здорово, если бы он обновлял ONKEYUPне только после того, как TextBox потеряет фокус или что-то в этом роде.
Заранее спасибо.