У меня есть сетка данных, которая отображает список заказов. Над сеткой данных есть поле, которое фильтрует заказы, захватывая ввод текста и затем вызывая метод на стороне сервера, чтобы получить заказы, соответствующие предоставленному тексту. Это прекрасно работает на странице.
Я попытался добавить страницу, которая передает параметры через строку запроса, которая автоматически применяет фильтр, когда пользователь попадает на страницу. Код для вызова метода на стороне сервера вызывается правильно, и данные возвращаются правильно, но сетка данных не показывает результаты. Если я введу тот же текст в текстовое поле на странице и выполню поиск, результаты, наконец, будут показаны в таблице данных. Это похоже на то, что сетка данных не видит изменений при первом входе пользователя на страницу с автоматическим фильтром. Вот некоторые относительные биты:
protected override void OnNavigatedTo(NavigationEventArgs e) {
if (NavigationContext.QueryString.ContainsKey("filterkeyword") && NavigationContext.QueryString.ContainsKey("filtervalue")) {
string filterkeyword = NavigationContext.QueryString["filterkeyword"];
string filtervalue = NavigationContext.QueryString["filtervalue"];
switch (filterkeyword) {
default: ApplyDefaultFilter(filtervalue); break;
}
} else {
ApplyDefaultFilter("");
}
}
Сетка данных просто привязана к объекту источника данных, а для источника данных не установлена автоматическая загрузка. Вот биты, когда пользователь отправляет запрос через поле фильтра:
private void txtFilter_KeyDown(object sender, KeyEventArgs e) {
if (e.Key == Key.Enter) {
ApplyDefaultFilter(txtFilter.Text);
txtFilter.Select(0, txtFilter.Text.Length);
}
}
Они оба вызывают одни и те же методы и возвращают результаты, просто текстовое поле каким-то образом сообщает странице обновить сетку данных и волшебным образом появляются данные. Есть ли событие, которое я могу заставить на странице обновить сетку данных?