Я использую IMobileServiceTable в классе уровня доступа к данным и привязываю его к списку. Начальная загрузка работает нормально, но фильтрация не выполняется. Он всегда возвращает исходные загруженные данные.Xamarin IMobileServiceTable Not Filtering
public class ItemsManager {
IMobileServiceTable<Item> itemTable;
public ItemsManager (IMobileServiceTable<Item> todoTable)
{
this.itemTable = todoTable;
}
public async Task<List<Item>> GetTasksAsync (string searchString)
{
//following doesn't work
var list = new List<Item> (await itemTable.Where(x => x.ItemID.Contains(searchString)).ToListAsync());
return list;
}
public async Task<List<Item>> GetTasksAsync()
{
return new List<Item> (await itemTable.OrderBy(a =>a.ItemID).ToListAsync());
}
}
Если это имеет значение, следующее мой код страницы:
public partial class ItemsListXaml : ContentPage
{
IMobileServiceTable<Item> itemTable;
ItemsManager itemManager;
public ItemsListXaml()
{
InitializeComponent();
itemTable = App.client.GetTable<Item>();
itemManager = new ItemsManager(itemTable);
App.SetItemsManager (itemManager);
}
protected async override void OnAppearing()
{
base.OnAppearing();
listView.ItemsSource = await itemManager.GetTasksAsync();
}
async void OnValueChanged (object sender, TextChangedEventArgs e) {
var t = e.NewTextValue;
// perform search on min 3 keypress
if (t.Length>3) {
listView.ItemsSource = await itemManager.GetTasksAsync(SearchFor.Text);
}
}
}
ли OnValueChanged функции существа срабатывает вообще? –
@ChrisAnderson, да, это срабатывает. –