У меня есть datagrid, который отображает список заказов. Над данным datagrid есть окно, которое фильтрует заказы, захватывая ввод текста, а затем вызывает метод на стороне сервера, чтобы получить заказы, соответствующие предоставленному тексту. Это хорошо работает на странице.Silverlight datagrid не привязывается к новым данным
Я попытался добавить страницу, которая передается в параметрах через querystring, которая автоматически применяет фильтр, когда пользователь приземляется на странице. Код для вызова метода на стороне сервера вызывается правильно, и данные возвращаются правильно, но дататус не показывает результаты. Если я введу тот же текст в текстовое поле на странице и поиск, результаты, наконец, будут показаны на datagrid. Это почти похоже на то, что датапард не видит изменения при первом входе пользователя на страницу с автоматическим фильтром. Вот некоторые relavent биты:
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);
}
}
Они оба называют одни и те же методы и возвращать результаты, это просто, что текстовое поле как-то говорит страницу, чтобы обновить DataGrid и волшебным образом данные появляются. Есть ли какое-то событие, которое я могу заставить на странице вызвать обновление datagrid?