Сетка данных Silverlight не привязывается к новым данным - PullRequest
0 голосов
/ 17 ноября 2010

У меня есть сетка данных, которая отображает список заказов. Над сеткой данных есть поле, которое фильтрует заказы, захватывая ввод текста и затем вызывая метод на стороне сервера, чтобы получить заказы, соответствующие предоставленному тексту. Это прекрасно работает на странице.

Я попытался добавить страницу, которая передает параметры через строку запроса, которая автоматически применяет фильтр, когда пользователь попадает на страницу. Код для вызова метода на стороне сервера вызывается правильно, и данные возвращаются правильно, но сетка данных не показывает результаты. Если я введу тот же текст в текстовое поле на странице и выполню поиск, результаты, наконец, будут показаны в таблице данных. Это похоже на то, что сетка данных не видит изменений при первом входе пользователя на страницу с автоматическим фильтром. Вот некоторые относительные биты:

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);
        }
    }

Они оба вызывают одни и те же методы и возвращают результаты, просто текстовое поле каким-то образом сообщает странице обновить сетку данных и волшебным образом появляются данные. Есть ли событие, которое я могу заставить на странице обновить сетку данных?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Реализует ли объект данных объект INotifyPropertyChanged или, если это коллекция, это ObservableCollection?

TextBox перепривязывает изменения AFAIK.

0 голосов
/ 17 ноября 2010

Я добавил это, и похоже, что это работает ... хотя это кажется чем-то вроде клуджа.

void ordersDataSource_LoadedData(object sender, LoadedDataEventArgs e) {
        ordersDataGrid.ItemsSource = e.Entities;
    }

Мне не нужно было это при фильтрации внутри страницы, но перенаправление пользователя на страницу требует этого .... странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...