得到了是同一数据源的BindingManagerBase对象,通过改变此对象的"Position"属性值,这样绑定数据的组件显示的数据就随之变化,从而实现导航数据记录。
< I > .导航按钮"上一条"实现方法:
protected void GoPrevious ( object sender , System.EventArgs e )
{
if ( myBind.Position == 0 )
MessageBox.Show ( "已经到了第一条记录!" , "信息提示!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
else
myBind.Position -= 1 ;
}
< II > . 导航按钮"下一条"实现方法:
protected void GoNext ( object sender , System.EventArgs e )
{
if ( myBind.Position == myBind.Count -1 )
MessageBox.Show ( "已经到了最后一条记录!", "信息提示!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
else
myBind.Position += 1 ;
}
< III > . 导航按钮"至尾"实现方法:
protected void GoLast ( object sender , System.EventArgs e )
{
myBind.Position = myBind.Count - 1 ;
}
< IV > . 导航按钮"至首"实现方法:
protected void GoFirst ( object sender , System.EventArgs e )
{
myBind.Position = 0 ;
}
注释:"Count"是BindingManagerBase对象的另外一个重要的属性,是数据集记录的总数。
三.实现删除记录:
在对数据记录进行操作的时候,有二点必须十分清晰:
其一:在对数据记录进行操作的时候,我想有一些程序员一定有这样一个疑惑,当对数据库服务器请求数据集的时候,就会产生"DataSet"对象,用以管理数据集,这样如果这些对数据库服务器的请求非常多,同样也就会产生很多的"DataSet"对象,达到一定时候必然会使得数据库服务器崩溃。这种想法是自然的,但和实际并不相符,因为"DataSet"对象并不是在服务器端产生的,而是在客户端产生的。所以面对众多的数据请求的时候对数据库服务器的影响并不十分太大。
其二:记得在用Delphi编写三层数据模型的时候的,每一次对数据库的修改其实只是对第二层产生的数据集的修改,要真正修改数据库,还必须调用一个另外的方法。在用ADO.NET处理数据库的时候,虽然处理的直接对象是数据库,但此时"DataSet"对象中的内容并没有随之改变,而绑定的数据组件显示的数据又来源于"DataSet"对象,这样就会产生一个错觉,就是修改了的记录并没有修改掉,删除的记录并没有删除掉。所以对数据记录进行操作的时候,在修改数据库后,还要对"DataSet"对象进行必要的修改,这样才能保证"DataSet"对象和数据库内容一致、同步。下面代码是删除当前绑定组件显示的记录的程序代码,此代码是以Access 2000数据库为模板的:
protected void Delete_record ( object sender , System.EventArgs e )
{
DialogResult r = MessageBox.Show ( "是否删除当前记录!" , "删除当前记录!" , MessageBoxButtons.YesNo , MessageBoxIcon.Question ) ;
int ss = ( int ) r ;
if ( ss == 6 ) // 按动 "确定"按钮
{
try{
file://连接到一个数据库
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data