datagrid如何实时刷新展示绑定的数据?

无趣 2011-02-23 10:06:06
使用dg.ItemSource绑定了一个List<>数据源,然后在timer事件中动态改变List<>表中的数据,可界面不实时刷新,只有重新绑定才能展示最新数据,但用户当前选择的行信息什么的都丢了。

有什么好办法让dataGrid实时刷新,反映绑定的数据呢?
还有,设置dg.ItemSource后,dataGrid会默认选中第一单元格,如何使得dataGrid不自动进行默认选择啊?最好设置dg.ItemSource什么都不选中。
...全文
762 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
无趣 2011-02-24
  • 打赏
  • 举报
回复
第一单元格选中状态去不掉,不过,可通过自定义选中行的背景色及单元格宽度,让用户看不出选中状态来绕过这个问题。
Sunpire 2011-02-23
  • 打赏
  • 举报
回复
1楼正解。ObservableCollection<T> 和 INotifyPropertyChanged
boziaa 2011-02-23
  • 打赏
  • 举报
回复
twoway是双向的,就你问题提的oneway就可以了,另外就是我在1楼说的 否则是不能实时刷新数据的
无趣 2011-02-23
  • 打赏
  • 举报
回复
好像关键是指定绑定模式为twoWay,中午试一下再说。
boziaa 2011-02-23
  • 打赏
  • 举报
回复
要实时刷新行 需要 用 ObservableCollection这个集合 命名空间System.Collections.ObjectModel
如果要实时刷新行里的某一列 还要实现INotifyPropertyChanged接口 命名空间System.ComponentModel
public class Data : INotifyPropertyChanged

{
private int _Jan;
public int Jan
{
get { return _Jan; }
set { _Jan = value; NotiFy("Jan"); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotiFy(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}


然后用ObservableCollection<Data> 作为数据源就ok了

至于默认选择第一行的问题 试下selectedItem设置null试试
无趣 2011-02-23
  • 打赏
  • 举报
回复
我仔细观察了一下,当选中一行时,该行也有一个焦点单元格,颜色与其他单元格不一致,当此时设置selectInedx=-1时,整行的选中状态是去掉了,但这个单元格的选中状态没变。

第一个单元格的问题,与这个类似啊。
无趣 2011-02-23
  • 打赏
  • 举报
回复
嗯,oneway够了,实时刷新问题解决了,多谢。

第一单元格选中问题是用SelectIndex=-1、SelectedItem = null、SelectedItems.Clear()都试过,没用。我的代码是:
dg.ItemSource = itemSource;
dg.SelectIndex = -1;
第二句是不是应该放在别处什么地方啊?
第1章 空 第2章 ASP.NET运行模型 21.如何在页面中应用javascript脚本-示例1 21.如何在页面中应用javascript脚本-示例2 22.如何实现从服务器端向页面动态添加javascript脚本-示例1 22.如何实现从服务器端向页面动态添加javascript脚本-示例2 24.如何处理多页面重定向到同一页面后的返回问题 25.如何用Response.Redirect方法传递汉字 29.如何利用输出缓存技术缓存整个页面 30.如何利用片段缓存技术对用户控件进行缓存 31.如何利用数据缓存技术提高程序的性能 33.如何实现当页面产生错误时重定向到自定义错误界面 35.如何在程序中读写Web.config文件 37.如何使用CSS文件定义控件的样式 38.如何启用和禁用ViewState保存状态信息的功能 39.如何应用IsPostBack控制页面的加载 41.如何使用Trace对象进行跟踪调试(页面级) 42.如何使用#Include语法将文件添加到页面 43.如何使用编程的方式处理异常信息 44.如何将网页错误信息写入事件日志 第3章 常用Web服务控件 46.如何使用Label控件动态显示文本信息 47.如何实现当鼠标移到控件时显示提示信息 48.如何在Web应用程序中实现快捷键功能(使用脚本实现) 48.如何在Web应用程序中实现快捷键功能(使用属性实现) 49.如何设置页面上控件的Tab键顺序 50.如何实现用回车键代替Tab键的功能 51.如何为按钮键添加消息框 52.Button、LinkButton和ImageButton服务控件的区别及应用 54.如何使用CheckBox和CheckBoxList控件(CheckBox示例) 54.如何使用CheckBox和CheckBoxList控件(CheckBoxList示例) 55.如何使用RadioButton和RadioButtonList控件(RadioButton示例) 55.如何使用RadioButton和RadioButtonList控件RadioButtonList示例) 56.如何使用Panel控件操作一组控件 57.如何使用Table控件组织页面的内容 58.如何实现DropDownList控件选项的添加、删除等操作 59.如何实现间接改变DropDownList控件的当前选项 60.如何实现两个或多个DropDownList控件的联动 61.如何实现ListBox控件选项的上移、下移、添加和删除操作 62.如何实现ListBox控件中选项的双击事件 63.如何动态设置ListBox控件中各选项的背景颜色 64.如何在页面中动态创建控件 65.如何为HTML服务器控件的事件添加自定义方法 第4章 验证控件 67.如何使用RequiredFieldValidator控件验证用户是否输入信息 68.如何使用RegularExpressionValidator控件验证E-mail地址和邮编等格式 69.如何使用RangeValidator控件验证输入的信息是否在指定范围内 70.如何使用CompareValidator控件对两个输入控件比较验证 71.如何使用CustomValidator控件自定义验证格式 72.如何使用ValidationSummary控件总结所有验证控件的错误信息 73.如何创建自定义功能的验证控件 74.如何禁用服务器控件的验证功能 75.如何控制页面部分验证控件有效 76.如何实现控件即时验证功能 77.如何使用验证控件综合验证用户注册页面 78.如何验证DataGrid控件的编辑列 81.如何使用验证控件验证日期类型的输入(CompareValidator) 81.如何使用验证控件验证日期类型的输入(CustomerValidator) 81.如何使用验证控件验证日期类型的输入(RegularValidator) 第5章 高级Web控件 82.如何在网页中使用Calendar Web控件显示和选择日期 83.如何在Calendar Web控件中控制个别日的内容及显示 84.如何在Calendar Web控件中控制用户日期选定 86.如何使用XML控件显示XML文件和进行XSLT转换 87.如何使用AdRotator Web控件制作广告发布程序-示例1 87.如何使用AdRotator Web控件制作广告发布程序-示例2 88.如何创建用户控件 89.如何将Web窗体转换成用户控件 90.如何实现动态加载用户控件 92.如何使用TabStrip Web和MultiP

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧