【发布时间】: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