在做项目的时候,少不了对数据的添加,删除,修改等操作,有时候感觉到很简单,但是如果要考虑到很多问题的话,那么就不是那么简单了,因为需要考虑到很多的问题和因素,下面是树形结构上采用数据源方式对数据进行操作,感觉到还可以,所以记下来,以后对自己有用。
/**
*
*添加物料分类的方法
*/
private void barButtonItem添加_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化父编号
int pid = 0;
//初始化记录数
int res = 0;
//初始化编码相同的记录数
int encode = 0;
//初始化最大编号
int max = 0;
//获取当前鼠标指向的单位地区记录
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果所获取的行不为空
if (row != null)
{
//取出的行不为空
//取出物料分类编号,并赋给父编号
pid = (int)row["编号"];
//获取最大编号
max = this.物料分类TableAdapter1.ScalarQuery最大编号().Value;
}
else {
//如果记录为空
//那么初始化父编号为0
pid = 0;
//初始化顺序号为0
max = 0;
}
//实例化添加物料分类窗口
Form_FL ffl = new Form_FL();
//获得连接
ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
//用户单击确定按钮
if (ffl.ShowDialog() == DialogResult.OK)
{
//判断是否存在相同的编码
encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
//sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
//如果存在
if (encode > 0)
{
//提示用户不能添加
XtraMessageBox.Show("该物料的编码已经存在,不能添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//如果数据库中有记录,同一节点中不能添加同名的数据
if (res > 0)
{
//如果数据库中已经存在物料分类,那么就提示用户是否保存
DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
//如果保存
if (result == DialogResult.OK)
{
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
else {
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
}
/**
* 同级添加物料分类方法
*/
private void barButtonItem添加同级_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化父编号
int pid = 0;
//初始化记录数
int res = 0;
//初始化编码记录数
int encode = 0;
//初始化最大编号
int max = 0;
//获取当前鼠标的节点所在的行
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果用户没有选中某一个节点
if (row == null) {
//提示用户
MyControl.MyMessageBox.ShowMsg("请选择要添加的同级目录!","添加提示");
//程序终止
return;
}
//把获取的编号赋给父编号
pid = (int)row["父编号"];
//实例化添加窗口
Form_FL ffl = new Form_FL();
//获得数据库连接
ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
//用户单击确定按钮后
if (ffl.ShowDialog() == DialogResult.OK) {
//判断是否存在相同的编码
encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
//sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
//获取最大编号
max = this.物料分类TableAdapter1.ScalarQuery最大编号().Value;
//如果存在
if (encode > 0)
{
//提示用户不能添加
XtraMessageBox.Show("该物料的编码已经存在,不能添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//如果数据库中有记录,同一节点中不能添加同名的数据
if (res > 0)
{
//如果数据库中已经存在物料分类,那么就提示用户是否保存
DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
//如果保存
if (result == DialogResult.OK)
{
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
else {
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
}
/**
*
* 实现删除的方法
*
*/
private void barButtonItem删除_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化编号
int id = 0;
//初始化记录数
int res = 0;
//获取当前鼠标所在节点的行
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果用户没有选中要删除的项
if (row == null) {
//提示用户
MyControl.MyMessageBox.ShowMsg("请选择要删除的项!", "添加提示");
//程序终止
return;
}
//取出用户要删除的信息的编号
id = (int)row["编号"];
//提示用户是否确定删除
DialogResult result = XtraMessageBox.Show("你确定要删除此信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
//如果用户确定要删除
if (result == DialogResult.OK) {
//检查物料信息表中是否用数据
res = this.物料分类TableAdapter1.ScalarQuery物料信息(id).Value;
//如果存在,不能删除
if (res > 0) {
//提示物料信息表中存在,不能删除!
MyControl.MyMessageBox.Show("物料信息表中存在数据,不能删除!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//查看是否有子节点
res = this.物料分类TableAdapter1.ScalarQuery子节点(id).Value;
//如果存在子节点
if (res > 0) {
// 提示用户
MyControl.MyMessageBox.ShowMsg("存在子节点,不能删除!", "提示");
//程序终止
return;
}
//调用delete方法,删除选中的数据
row.Delete();
//更新数据
this.物料分类TableAdapter1.Update(this.dataSet_Data1.物料分类);
}
}
/**
*实现修改物料分类信息
*
*/
private void barButtonItem修改_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化编号
int pid = 0;
//初始化记录数
int res = 0;
//初始化编码的记录数
int encode = 0;
//获取鼠标当前所在行的节点
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果用户没有选中要修改的节点
if (row == null) {
//提示用户
MyControl.MyMessageBox.ShowMsg("请选择要修改的项","修改提示");
//程序终止
return;
}
//取出要修改的父编号
pid = (int)row["父编号"];
// 实例化修改窗口
Form_FL ffl = new Form_FL();
//获得连接
ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
//把数据显示在窗体上
ffl.Text名称.Text = row["名称"].ToString();
ffl.Text编码.Text = row["编码"].ToString();
ffl.Text说明.Text = row["说明"].ToString();
//确定修改
if (ffl.ShowDialog() == DialogResult.OK) {
//判断是否存在相同的编码
encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
//sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
//如果存在,而且编码已经修改
if (encode > 0 &&(ffl.Text编码.Text != row["编码"].ToString()))
{
//提示用户不能修改
XtraMessageBox.Show("该物料的编码已经存在,不能修改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//存在同名
if (res > 0)
{
//如果数据库中已经存在物料分类,那么就提示用户是否保存
DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
if (result == DialogResult.OK)
{
//把修改的数据存到数据库中
row.BeginEdit();
row["名称"] = ffl.Text名称.Text;
row["编码"] = ffl.Text编码.Text;
row["说明"] = ffl.Text说明.Text;
row.EndEdit();
}
}
else {
//把修改的数据存到数据库中
row.BeginEdit();
row["名称"] = ffl.Text名称.Text;
row["编码"] = ffl.Text编码.Text;
row["说明"] = ffl.Text说明.Text;
row.EndEdit();
}
}
//更新数据库信息
this.物料分类TableAdapter1.Update(this.dataSet_Data1.物料分类);
}
这些操作不管是做什么项目,都会少不了,即使变也是数据库表和字段的改变,但是只要能举一反三,就可以解决很多的问题了
/**
*
*添加物料分类的方法
*/
private void barButtonItem添加_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化父编号
int pid = 0;
//初始化记录数
int res = 0;
//初始化编码相同的记录数
int encode = 0;
//初始化最大编号
int max = 0;
//获取当前鼠标指向的单位地区记录
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果所获取的行不为空
if (row != null)
{
//取出的行不为空
//取出物料分类编号,并赋给父编号
pid = (int)row["编号"];
//获取最大编号
max = this.物料分类TableAdapter1.ScalarQuery最大编号().Value;
}
else {
//如果记录为空
//那么初始化父编号为0
pid = 0;
//初始化顺序号为0
max = 0;
}
//实例化添加物料分类窗口
Form_FL ffl = new Form_FL();
//获得连接
ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
//用户单击确定按钮
if (ffl.ShowDialog() == DialogResult.OK)
{
//判断是否存在相同的编码
encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
//sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
//如果存在
if (encode > 0)
{
//提示用户不能添加
XtraMessageBox.Show("该物料的编码已经存在,不能添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//如果数据库中有记录,同一节点中不能添加同名的数据
if (res > 0)
{
//如果数据库中已经存在物料分类,那么就提示用户是否保存
DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
//如果保存
if (result == DialogResult.OK)
{
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
else {
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
}
/**
* 同级添加物料分类方法
*/
private void barButtonItem添加同级_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化父编号
int pid = 0;
//初始化记录数
int res = 0;
//初始化编码记录数
int encode = 0;
//初始化最大编号
int max = 0;
//获取当前鼠标的节点所在的行
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果用户没有选中某一个节点
if (row == null) {
//提示用户
MyControl.MyMessageBox.ShowMsg("请选择要添加的同级目录!","添加提示");
//程序终止
return;
}
//把获取的编号赋给父编号
pid = (int)row["父编号"];
//实例化添加窗口
Form_FL ffl = new Form_FL();
//获得数据库连接
ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
//用户单击确定按钮后
if (ffl.ShowDialog() == DialogResult.OK) {
//判断是否存在相同的编码
encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
//sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
//获取最大编号
max = this.物料分类TableAdapter1.ScalarQuery最大编号().Value;
//如果存在
if (encode > 0)
{
//提示用户不能添加
XtraMessageBox.Show("该物料的编码已经存在,不能添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//如果数据库中有记录,同一节点中不能添加同名的数据
if (res > 0)
{
//如果数据库中已经存在物料分类,那么就提示用户是否保存
DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
//如果保存
if (result == DialogResult.OK)
{
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
else {
//连接物料分类数据集
DataSet_Data.物料分类Row newrow = this.dataSet_Data1.物料分类.New物料分类Row();
//向数据库添加物料信息的数据
newrow["父编号"] = pid;
newrow["名称"] = ffl.Text名称.Text;
newrow["编码"] = ffl.Text编码.Text;
newrow["顺序号"] = max + 1;
newrow["说明"] = ffl.Text说明.Text;
//添加物料分类信息
this.dataSet_Data1.物料分类.Add物料分类Row(newrow);
//更新数据
this.物料分类TableAdapter1.Update(newrow);
}
}
}
/**
*
* 实现删除的方法
*
*/
private void barButtonItem删除_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化编号
int id = 0;
//初始化记录数
int res = 0;
//获取当前鼠标所在节点的行
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果用户没有选中要删除的项
if (row == null) {
//提示用户
MyControl.MyMessageBox.ShowMsg("请选择要删除的项!", "添加提示");
//程序终止
return;
}
//取出用户要删除的信息的编号
id = (int)row["编号"];
//提示用户是否确定删除
DialogResult result = XtraMessageBox.Show("你确定要删除此信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
//如果用户确定要删除
if (result == DialogResult.OK) {
//检查物料信息表中是否用数据
res = this.物料分类TableAdapter1.ScalarQuery物料信息(id).Value;
//如果存在,不能删除
if (res > 0) {
//提示物料信息表中存在,不能删除!
MyControl.MyMessageBox.Show("物料信息表中存在数据,不能删除!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//查看是否有子节点
res = this.物料分类TableAdapter1.ScalarQuery子节点(id).Value;
//如果存在子节点
if (res > 0) {
// 提示用户
MyControl.MyMessageBox.ShowMsg("存在子节点,不能删除!", "提示");
//程序终止
return;
}
//调用delete方法,删除选中的数据
row.Delete();
//更新数据
this.物料分类TableAdapter1.Update(this.dataSet_Data1.物料分类);
}
}
/**
*实现修改物料分类信息
*
*/
private void barButtonItem修改_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//初始化编号
int pid = 0;
//初始化记录数
int res = 0;
//初始化编码的记录数
int encode = 0;
//获取鼠标当前所在行的节点
DataRowView row = this.treeList.GetDataRecordByNode(this.treeList.FocusedNode) as DataRowView;
//如果用户没有选中要修改的节点
if (row == null) {
//提示用户
MyControl.MyMessageBox.ShowMsg("请选择要修改的项","修改提示");
//程序终止
return;
}
//取出要修改的父编号
pid = (int)row["父编号"];
// 实例化修改窗口
Form_FL ffl = new Form_FL();
//获得连接
ffl.sqlConnectionStringBuilder = sqlConnectionBuilder;
//把数据显示在窗体上
ffl.Text名称.Text = row["名称"].ToString();
ffl.Text编码.Text = row["编码"].ToString();
ffl.Text说明.Text = row["说明"].ToString();
//确定修改
if (ffl.ShowDialog() == DialogResult.OK) {
//判断是否存在相同的编码
encode = this.物料分类TableAdapter1.ScalarQuery编码(ffl.Text编码.Text).Value;
//sql语句,查询根据用户输入的父编号和地区名称查询数据库存在的记录数
res = this.物料分类TableAdapter1.ScalarQuery同名(ffl.Text名称.Text, pid).Value;
//如果存在,而且编码已经修改
if (encode > 0 &&(ffl.Text编码.Text != row["编码"].ToString()))
{
//提示用户不能修改
XtraMessageBox.Show("该物料的编码已经存在,不能修改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
//程序终止
return;
}
//存在同名
if (res > 0)
{
//如果数据库中已经存在物料分类,那么就提示用户是否保存
DialogResult result = MyControl.MyMessageBox.Show("该名称已经存在,是否保存!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
if (result == DialogResult.OK)
{
//把修改的数据存到数据库中
row.BeginEdit();
row["名称"] = ffl.Text名称.Text;
row["编码"] = ffl.Text编码.Text;
row["说明"] = ffl.Text说明.Text;
row.EndEdit();
}
}
else {
//把修改的数据存到数据库中
row.BeginEdit();
row["名称"] = ffl.Text名称.Text;
row["编码"] = ffl.Text编码.Text;
row["说明"] = ffl.Text说明.Text;
row.EndEdit();
}
}
//更新数据库信息
this.物料分类TableAdapter1.Update(this.dataSet_Data1.物料分类);
}
这些操作不管是做什么项目,都会少不了,即使变也是数据库表和字段的改变,但是只要能举一反三,就可以解决很多的问题了