我有一个数据网格显示订单列表。在数据网格上方,有一个框可以通过捕获文本输入来过滤订单,然后调用服务器端方法来获取与提供的文本匹配的订单。这在页面上正常工作。Silverlight datagrid不重新绑定到新数据
我试过添加一个页面,通过查询字符串参数传递,当用户登陆页面时会自动应用过滤器。调用服务器端方法的代码被正确调用并且数据正确返回,但datagrid不显示结果。如果我在页面上的文本框中输入相同的文本并搜索,结果最终会显示在数据网格中。这几乎就像用户在第一次使用自动过滤器进入页面时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和神奇的是数据出现。是否有一个事件可以在页面上强制刷新数据网格?