DataFormGuild.gif

上面是用VS.NET的"数据窗体向导"自动生成的窗体.但是,我们从其中生成的代码里可以学到很多东西.
下面,我们会一个个按钮的代码进行讲解:

btnLoad(加载):
        private void btnLoad_Click(object sender, System.EventArgs e)
        
{
            
try 
            
{
                
// 尝试加载数据集。
                this.LoadDataSet();
            }

            
catch (System.Exception eLoad) 
            
{
                
// 在此处添加错误处理代码。
                
// 显示错误信息(如果有)。
                System.Windows.Forms.MessageBox.Show(eLoad.Message);
            }

            
this.objjobDataSet_PositionChanged();

        }


        
public void LoadDataSet()
        
{
            
// 创建一个新数据集以保存从 FillDataSet 调用返回的记录。
            
// 使用了一个临时数据集,这是因为填充现有的数据集
            
// 需要重新绑定数据绑定。
            Car.jobDataSet objDataSetTemp;
            objDataSetTemp 
= new Car.jobDataSet();
            
try 
            
{
                
// 尝试填充临时数据集。
                this.FillDataSet(objDataSetTemp);
            }

            
catch (System.Exception eFillDataSet) 
            
{
                
// 在此处添加错误处理代码。
                throw eFillDataSet;
            }

            
try 
            
{
                
// 清空数据集中的旧记录。
                objjobDataSet.Clear();
                
// 将记录合并到主数据集中。
                objjobDataSet.Merge(objDataSetTemp);
            }

            
catch (System.Exception eLoadMerge) 
            
{
                
// 在此处添加错误处理代码。
                throw eLoadMerge;
            }


        }


        
public void FillDataSet(Car.jobDataSet dataSet)
        
{
            
// 在填充数据集前关闭约束检查。
            
// 这允许适配器填充数据集而不用考虑
            
// 表之间的依赖项。
            dataSet.EnforceConstraints = false;
            
try 
            
{
                
// 打开连接。
                this.oleDbConnection1.Open();
                
// 尝试通过 OleDbDataAdapter1 填充数据集。
                this.oleDbDataAdapter1.Fill(dataSet);
            }

            
catch (System.Exception fillException) 
            
{
                
// 在此处添加错误处理代码。
                throw fillException;
            }

            
finally 
            
{
                
// 重新打开约束检查。
                dataSet.EnforceConstraints = true;
                
// 无论是否引发了异常都关闭连接。
                this.oleDbConnection1.Close();
            }


        }


btnUpdate(更新):
        private void btnUpdate_Click(object sender, System.EventArgs e)
        
{
            
try 
            
{
                
// 尝试更新数据源。
                this.UpdateDataSet();
            }

            
catch (System.Exception eUpdate) 
            
{
                
// 在此处添加错误处理代码。
                
// 显示错误信息(如果有)。
                System.Windows.Forms.MessageBox.Show(eUpdate.Message);
            }

            
this.objjobDataSet_PositionChanged();

        }


        
public void UpdateDataSet()
        
{
            
// 创建一个新数据集来保存对主数据集所做的更改。
            Car.jobDataSet objDataSetChanges = new Car.jobDataSet();
            
// 停止当前的任何编辑。
            this.BindingContext[objjobDataSet,"tblJobDetails"].EndCurrentEdit();
            
// 获取对主数据集所做的更改。
            objDataSetChanges = ((Car.jobDataSet)(objjobDataSet.GetChanges()));
            
// 检查是否做了任何更改。
            if ((objDataSetChanges != null)) 
            
{
                
try 
                
{
                    
// 需要做一些更改,所以尝试通过调用 update 方法
                    
// 和传递数据集以及任何参数来更新数据源。
                    this.UpdateDataSource(objDataSetChanges);
                    objjobDataSet.Merge(objDataSetChanges);
                    objjobDataSet.AcceptChanges();
                }

                
catch (System.Exception eUpdate) 
                
{
                    
// 在此处添加错误处理代码。
                    throw eUpdate;
                }

                
// 添加代码以检查返回的数据集中是否有任何可能已被
                
// 推入到行对象错误中的错误。
            }


        }


        
public void UpdateDataSource(Car.jobDataSet ChangedRows)
        
{
            
try 
            
{
                
// 在有挂起的更改时,只需要更新数据源即可。
                if ((ChangedRows != null)) 
                
{
                    
// 打开连接。
                    this.oleDbConnection1.Open();
                    
// 尝试更新数据源。
                    oleDbDataAdapter1.Update(ChangedRows);
                }

            }

            
catch (System.Exception updateException) 
            
{
                
// 在此处添加错误处理代码。
                throw updateException;
            }

            
finally 
            
{
                
// 无论是否引发了异常都关闭连接。
                this.oleDbConnection1.Close();
            }


        }


btnCancelAll:(全部取消)
        private void btnCancelAll_Click(object sender, System.EventArgs e)
        
{
            
this.objjobDataSet.RejectChanges();

        }


btnAdd(添加记录):
        private void btnAdd_Click(object sender, System.EventArgs e)
        
{
            
try 
            
{
                
// 清除当前编辑内容
                this.BindingContext[objjobDataSet,"tblJobDetails"].EndCurrentEdit();
                
this.BindingContext[objjobDataSet,"tblJobDetails"].AddNew();
            }

            
catch (System.Exception eEndEdit) 
            
{
                System.Windows.Forms.MessageBox.Show(eEndEdit.Message);
            }

            
this.objjobDataSet_PositionChanged();

        }


btnDelete(删除记录):
        private void btnDelete_Click(object sender, System.EventArgs e)
        
{
            
if ((this.BindingContext[objjobDataSet,"tblJobDetails"].Count > 0)) 
            
{
                
this.BindingContext[objjobDataSet,"tblJobDetails"].RemoveAt(this.BindingContext[objjobDataSet,"tblJobDetails"].Position);
                
this.objjobDataSet_PositionChanged();
            }


        }


btnCancel(取消):
        private void btnCancel_Click(object sender, System.EventArgs e)
        
{
            
this.BindingContext[objjobDataSet,"tblJobDetails"].CancelCurrentEdit();
            
this.objjobDataSet_PositionChanged();

        }


几个移动记录按钮集合:
        private void btnNavFirst_Click(object sender, System.EventArgs e)
        
{
            
this.BindingContext[objjobDataSet,"tblJobDetails"].Position = 0;
            
this.objjobDataSet_PositionChanged();

        }


        
private void btnNavPrev_Click(object sender, System.EventArgs e)
        
{
            
this.BindingContext[objjobDataSet,"tblJobDetails"].Position = (this.BindingContext[objjobDataSet,"tblJobDetails"].Position - 1);
            
this.objjobDataSet_PositionChanged();

        }


        
private void btnNavNext_Click(object sender, System.EventArgs e)
        
{
            
this.BindingContext[objjobDataSet,"tblJobDetails"].Position = (this.BindingContext[objjobDataSet,"tblJobDetails"].Position + 1);
            
this.objjobDataSet_PositionChanged();

        }


        
private void btnLast_Click(object sender, System.EventArgs e)
        
{
            
this.BindingContext[objjobDataSet,"tblJobDetails"].Position = (this.objjobDataSet.Tables["tblJobDetails"].Rows.Count - 1);
            
this.objjobDataSet_PositionChanged();

        }


objjobDataSet_PositionChanged方法只是显示页数的视觉操作:
        private void objjobDataSet_PositionChanged()
        
{
            
this.lblNavLocation.Text = ((((this.BindingContext[objjobDataSet,"tblJobDetails"].Position + 1)).ToString() + " 的 "
                
+ this.BindingContext[objjobDataSet,"tblJobDetails"].Count.ToString());

        }
posted on 2005-08-11 22:17  wddavid  阅读(684)  评论(0编辑  收藏  举报