【问题标题】:Silverlight datagrid not rebinding to new dataSilverlight 数据网格未重新绑定到新数据
【发布时间】:2011-05-11 12:28:15
【问题描述】:

我有一个显示订单列表的数据网格。在数据网格上方,有一个框通过捕获文本输入来过滤订单,然后调用服务器端方法来获取与提供的文本匹配的订单。这在页面上工作正常。

我尝试添加一个页面,该页面通过查询字符串传递参数,当用户登陆该页面时,它将自动应用过滤器。调用服务器端方法的代码调用正确,数据返回正确,但是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);
        }
    }

它们都调用相同的方法并返回结果,只是文本框以某种方式告诉页面刷新数据网格并神奇地出现数据。是否有我可以在页面上强制刷新数据网格的事件?

【问题讨论】:

    标签: silverlight data-binding datagrid


    【解决方案1】:

    你的datasouce对象是实现INotifyPropertyChanged还是如果它是一个集合,它是一个ObservableCollection吗?

    TextBox 重新绑定更改 AFAIK。

    【讨论】:

      【解决方案2】:

      我添加了这个,它似乎可以工作......虽然这看起来有点杂乱无章。

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

      在页面内过滤时我不需要它,但是将用户重定向到页面需要这个....奇怪。

      【讨论】:

        猜你喜欢
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多