簡體   English   中英

Silverlight DataGrid不重新綁定到新數據

[英]Silverlight datagrid not rebinding to new data

我有一個顯示訂單列表的數據網格。 在數據網格上方,有一個框,通過捕獲文本輸入然后調用服務器端方法來獲取與提供的文本匹配的訂單,從而過濾訂單。 在頁面上工作正常。

我嘗試添加一個頁面,該頁面通過querystring傳遞參數,當用戶登陸頁面時,該參數會自動應用過濾器。 正確調用了調用服務器端方法的代碼,並且正確返回了數據,但是datagrid沒有顯示結果。 如果我在頁面上的文本框中鍵入相同的文本並進行搜索,則結果最終將顯示在數據網格上。 幾乎就像datagrid在用戶第一次使用自動過濾器訪問頁面時看不到更改。 以下是一些相關的位:

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

它們都調用相同的方法並返回結果,只是文本框以某種方式告訴頁面刷新數據網格並神奇地顯示數據。 我是否可以強制在頁面上引發刷新數據網格的事件?

我添加了它,它似乎起作用了……盡管這似乎有點麻煩。

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

在頁面內進行過濾時,我不需要它,但是將用戶重定向到頁面需要這樣做。

您是否在數據源對象中實現INotifyPropertyChanged或者如果它是一個集合,那么它是ObservableCollection嗎?

TextBox在更改AFAIK后重新綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM