目录
本系列文章基于B站UP主“面朝星海我心澎湃”的视频P4,P5,时空门:P6 删除和修改功能的实现
区别在:
①up主用的SQLserver,但是本文章是MySQL
②本文章的数据库表比up主复杂一点,以及表里的内容不一样(本文章无论用户表还是管 理员表都是海贼王滴,没办法,海米一枚~)
S1删除图书
①修改启动项
Program的启动项改为admin2
②设置当前选中的图书
拉一个label在添加图书button的上面,其Font->text改为“当前选择的图书是:”【①】
再拉一个label放在刚刚拉的旁边,改其name为 label_chose【②】,同时其Font->text改为“NULL”
③双击删除按钮
进入删除的函数private void button_delete_book_Click(object sender, EventArgs e)
private void button_delete_book_Click(object sender, EventArgs e)
{
try//防止索引超出范围,这里就用try...catch
{
string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串
label_chose.Text=id+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//显示正在选中的书号+书名
DialogResult dr = MessageBox.Show("多笋啊~你真的想删书咩?", "消息提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if(dr==DialogResult.OK)
{
string sql = $"DELETE FROM ks_book WHERE bkCode= '{id}';";
Dao dao = new Dao();
if(dao.Execute(sql)>0)
{
MessageBox.Show("滴!知识的财富-1");
Table();
}
else
{
MessageBox.Show("鼠鼠我呀,删除失败了呢~" + sql);
}
dao.DaoClose();
}
}
catch (Exception)
{
MessageBox.Show("鼠鼠我呀,觉得你连想删除的都还没有选中呢", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
④初始时label中就已经选择了图书
复制label_chose.Text= dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();;//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串
admin2.cs【设计】->单击dataGridView1->属性->开头几个的闪电图片【事件】->操作->Click->双击Click->进入admin2.cs的private void dataGridView1_Click(object sender, EventArgs e)函数,其中输入 label_chose.Text= dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();;//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串
再到启动事件里,即admin2.cs的 private void admin2_Load(object sender, EventArgs e)函数中输入label_chose.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串(PS:放在Table()函数下面)
⑤界面过大
全部弄完后,运行,如果发现界面太大,解决方法:在admin2.cs的 private void admin2_Load(object sender, EventArgs e)函数中输入。再根据运行结果调整admin2.cs【设计】的控件大小
this.Width = 1000;
this.Height = 550;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
S2 修改图书
①构造添加的页面
添加新的窗口->命名为admin22(即admin2下的一个子窗体)
②修改界面名称
选中窗体,修改属性的Font->Text为”修改图书信息“
③页面布局
1.界面大致
法一:把admin21的全选C,V到admin22
法二:按照上一个文章的“S4 图书添加->③页面布局”步骤做一遍,这里不再赘述,传送门:页面布局
2.修改button
将admin22.cs【设计】的“添加图书的Text改为:‘Font->Text->“修改”,name改为:button_alter_book
双击“修改”的button,进入admin22.cs的private void button_alter_book_Click(object sender, EventArgs e)函数编辑页面-->在改函数外新建一个admin22的构造函数,如下代码->
string ID = "";//ID是主键,用于修改检索目标课本
public admin22(string id,string name,string author,string press,string ISBN,string catalog,string price,string status)//这里的8个参数是数据库表book的8个属性
{
InitializeComponent();
//传值
ID=textBox1.Text = id;
textBox2.Text = name;
textBox3.Text = author;
textBox4.Text = press;
textBox5.Text = ISBN;
textBox6.Text = catalog;
textBox7.Text = price;
textBox8.Text = status;
}
S3 界面跳转
①跳转界面
连接admin2【图书管理页面】和admin22【修改图书信息】,实现界面跳转
双击admin2.cs【设计】的“修改图书”的button,进入admin2.cs的 private void button_alter_book_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码
private void button_alter_book_Click(object sender, EventArgs e)
{
admin22 a2 = new admin22();//连接admin2【图书管理页面】和admin22【修改图书信息】,实现界面跳转
a2.ShowDialog();
}
②传入变量
依旧在这个函数里,在上一步的基础上进行如下修改:
private void button_alter_book_Click(object sender, EventArgs e)
{
try//双击tab 可直接补全
{
string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
string name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
string author = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
string press = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
string ISBN = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
string catalog = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
string price = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
string status = dataGridView1.SelectedRows[0].Cells[7].Value.ToString();
admin22 a2 = new admin22(id,name,author,press,ISBN,catalog,price,status);//连接admin2【图书管理页面】和admin22【修改图书信息】,实现界面跳转
a2.ShowDialog();
Table();//刷新数据
}
catch (Exception)
{
MessageBox.Show("鼠鼠我呀,不知道你哪里错了,\n但是肯定的是现在修改不了啦\n\t哈哈哈~~");
}
}
S4 admin22.cs【设计】的修改button
复制在navicat下copy的MySQL修改语句:UPDATE ks_book SET bkCode='1008',bkName='VStest',bkAuthor='龙',bkPress='革命军',bkISBN='',bkCatalog='',bkPrice=99,bkStatus='在馆' WHERE bkCode='1007';
双击admin22.cs【设计】的“修改”的button,进入admin22.cs的 private void button_alter_book_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码
private void button_alter_book_Click(object sender, EventArgs e)//调用MySQL语句,开始修改
{
//pt:下面的sql语句是直接从编译器navicat上C V的
string sql = $"UPDATE ks_book SET bkCode='{textBox1.Text}',bkName='{textBox2.Text}',bkAuthor='{textBox3.Text}',bkPress='{textBox4.Text}',bkISBN='{textBox5.Text}',bkCatalog='{textBox6.Text}',bkPrice={textBox7.Text},bkStatus='{textBox8.Text}' WHERE bkCode='{ID}';";
Dao dao = new Dao();
if(dao.Execute(sql)>0)
{
MessageBox.Show("Alter successfully");
this.Close();
}
}
S5 admin22.cs【设计】的清空button
双击admin22.cs【设计】的“清空”的button,进入admin22.cs的private void button_empty_Click(object sender, EventArgs e)函数编辑页面-->填入如下代码
private void button_empty_Click(object sender, EventArgs e)
{
//点击“取消”button后 清空界面框
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;
tb.Text = String.Empty;
}
}
}