- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用委托实现检索功能(C/S架构)
在向用户展示数据时,本人喜欢用DataGridViwe,但数据较多时,用户经常反映为了找某一记录而花费很多时间,提出要求制作类似于Excel的检索功能。
有人说,可以用SQL的限制条件来实现,显示当前的内容即可。其实不然,有些情况,为了能以观全局,必须要展示所有的记录给用户,如此,用户查看时才不会遗漏。另外有些表的记录并不是直接显示,而是通过非常复杂的运算而得到,花费的时间较长,若每次让用户花很长的时间显示数据,用户会非常厌烦。为此按要求给DataGridView制作检索功能。
我们先看Excel的检索功能,先显示检索对话框,输入数据,然后点击检索按钮,系统在表中找到相应的数据并标记。
图1 Excel的检索窗口
图2 Excel检索后的结果
如图2所示,点击检索窗口的检索按钮,Excel开始检索,并将检索到的首个值框中以提示用户。
我们藉以Excel的检索功能为蓝本,制作类似的检索功能。本教程仅实现检索功能,至于如何获得数据,如何给表加载数据,不在本教程范围之内,大家可以百度一下。
图3 已准备好的包含记录的DataGridView
欲通过点击检索按钮打开检索窗口如图4所示
图4 检索窗口
在检索窗口的文本框中输入欲寻找的字符,若找到则标记该行,若继续点击下一个按钮,会连续标记找到的行,直到表的末尾。如图5所示
图5 检索到的包含张三的所有记录,因是模糊检索,所以同时也找到了张三丰的记录。
所有代码均有VB.NET2005 实现。
首先在检索窗口的代码窗口中定义委托及委托事件
定义委托变量。
Public Delegate Sub StrSearchHandler(ByVal str As String)
定义委托事件,共享方式便于调用程序直接使用。
Public Shared Event StrSearchEvent As StrSearchHandler
……
Public Shared 可让主调程序直接使用,而不必定义该检索窗口变量 。
在主窗口调用该委托事件时可如此写:
AddHandler frmDataGridViewPast_Search.StrSearchEvent, AddressOf JianSuo。
AddHandler添加句柄 frmDataGridViewPast_Search.StrSearchEvent的事件注册,该处不必实例化,直接写委托的调用,告知窗体的委托事件被触发时,调用该处AddressOf处的方法JianSuo,而该方法直接写于本地代码中,而且JianSuo就是一个普通的sub方法,当然其参数必须与当初定义的委托方法一致,如参数的个数以及参数的数据类型。该语句一般写入到初始加载方法中,即 Public Sub New(),其目的是一次注册永久使用,除非该窗体被关闭。
在检索窗口中每次点击检索窗口中的【下一个】按钮时,即触发一次,主调程序中的 JianSuo方法即实行一次,这样就实现了检索窗口和主调窗口的互动。
触发自定义事件,通知调用程序点击了OK按钮。
RaiseEvent StrSearchEvent(txtSearchValue.Text)
(
每次打开时即登记注册的事件
AddHandler frmDataGridViewPast_Search.StrSearchEvent, AddressOf JianSuo。
(
启用该方法实行检索功能。
Private Sub JianSuo(ByVal val As String)
以上为委托事件的事件触发机制。
下面贴出代码,每段代码均有详细的注释,直接阅读注释即可理解。
*************************************************************************************
先贴出检索窗口的代码。
Public Class frmDataGridViewPast_Search
#Region 定义变量
定义委托变量。
Public Delegate Sub StrSearchHandler(ByVal str As String)
定义委托事件,共享方式便于调用程序直接使用。
Public Shared Event StrSearchEvent As StrSearchHandler
#End Region
#Region 检索按钮
当窗体为活动状态时,文本框获得焦点,并让其为全选状态。
Private Sub frmDataGridViewPast_Search_Act
文档评论(0)