惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tor Project blog
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 【当耐特】
G
Google Developers Blog
J
Java Code Geeks
The Cloudflare Blog
Attack and Defense Labs
Attack and Defense Labs
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
I
Intezer
Jina AI
Jina AI
T
Tenable Blog
P
Palo Alto Networks Blog
Project Zero
Project Zero
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
The Hacker News
The Hacker News
F
Full Disclosure
Cloudbric
Cloudbric
量子位
H
Heimdal Security Blog
K
Kaspersky official blog
有赞技术团队
有赞技术团队
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
阮一峰的网络日志
阮一峰的网络日志
Vercel News
Vercel News
Recent Announcements
Recent Announcements
WordPress大学
WordPress大学
GbyAI
GbyAI
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
Recorded Future
Recorded Future
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
Webroot Blog
Webroot Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Exploit Database - CXSecurity.com
Apple Machine Learning Research
Apple Machine Learning Research
C
Cybersecurity and Infrastructure Security Agency CISA
H
Hacker News: Front Page
Latest news
Latest news

博客园 - 秋枫

使用BizTalk Server常见问题处理 BizTalk Server中简单xml架构使用举例 CodeProject.com上微软BizTalk平台技术文章集锦 BizTalk Server 2006中使用MQSeries适配器问题处理 基于.Net平台应用程序唯一运行实例实现 使用BizTalk Server的Sql适配器出现“新事务不能登记到指定的事务处理器中”异常的处理 谈基于.net平台windows开发中的模式窗体 Visual studio 2005下xml的xsl转换调试 小提国内一些提供RSS服务的网站生成Rss文件问题 Visual studio .net 的“隐蔽性”和容易“忽略”的功能 使用sqlcmd(osql) 实用工具列出本地网内的Sql Server 服务器 《敏捷注册表》1.0使用说明书 《敏捷注册表》1.0概述 使用Microsoft SQL Server 2000的XML查询 asp.net中显示DataGrid控件列序号的几种方法 使用.net framewrok 1.1版System.Windows.Forms.TreeView的一个问题 使用.net framewrok 1.1版注册表API的局限和解决 使用SaveFileDialog需要注意的情况 使用.net framework中常用类在2.0版中的新功能
使用从BindingManagerBase.PositionChanged 事件的注意点
秋枫 · 2005-10-31 · via 博客园 - 秋枫

CurrencyManager 类是从抽象类BindingManagerBase派生,当开发基于数据库的应用程序时,经常会在界面层进行数据绑定来显示数据库的数据,由此,通过注册BindingManagerBase.PositionChanged 事件来实现在显示的记录上下移动时进行操作,一般都通过PositionChanged 事件来更新菜单或工具栏的状态。但是有些的时候,如果不注意可能引起逻辑上思维上错误,下面就是这种情况。

假设DataGrid绑定了某个DataTableDataView。设置DataView.RowFilter = null,或DataView.RowFilter = String.Empty;显示了所有10条记录。假设当前记录的索引为0,也就是第一条,到DataView.RowFilter设置为其它条件进行过滤时,假设显示了5条记录,新的数据当前记录的索引还是为0(没有人为改变)。如果使用者刚好注册了.PositionChanged 事件来处理一些动作,那这个事件是不会触发的,当然这里可以通过代码直接调用事件处理程序。

private void Position_Changed(object sender, EventArgs e)

{

   // 处理代码

}

上面的步骤可能就会有问题存在,PositionChanged 事件虽然没有发生,但是过滤后5条记录中的索引为0的那条可能已经不是过滤前10条记录中索引为0的那条了。如果针对当前记录进行处理的代码没有考虑这一点,那可能就会引起不容易发现的逻辑问题。