C#在windowsform的datagridview表格里面添加一列删除按钮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#在windowsform的datagridview表格里面添加一列删除按钮相关的知识,希望对你有一定的参考价值。
点击这个删除按钮就可以删除datagridview里面的与按钮同一行的信息,这个信息也是真的从数据库里面删除了,而不是只在dataset里面删除。
如果有会的大侠,请把您的代码尽可能详细的告诉我。
最好是一步步的道来,谢谢啦。辛苦各位大侠了。
userid username
1 aaa
2 bbb
详细看步聚
1 拖个datagridview到窗体上。
2 把这两列绑到datagridview上
3 给这个datagridview添加个DataGridViewButtonColumn按钮列 列名叫ColumnDelete
4 添加datagridview的CellContentClick(单元格单击事件)
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
if (e.ColumnIndex == this.dataGridView1.Columns["ColumnDelete"].Index) //判断列索引是不是删除按钮
int rows = dataGridView1.CurrentRow.Index; //得到当前行的索引
string id = dataGridView1.Rows[rows].Cells[0].Value.ToString(); //得到表的主键ID,就是上表中的userid
if (id != null && id != "" && MessageBox.Show("您确定要删除吗?", "重要提示!", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.OK)
new BLL.sys_user().Delete(Convert.ToInt32(id)); //执行删除方法
bindUserList(null,null); //重新绑定数据(刷新列表)
追问
貌似快要成功了,只是BLL和bindUserList是什么东西,会报错的!
辛苦你了!!
1 new BLL.sys_user().Delete(Convert.ToInt32(id)); //执行删除方法
2 bindUserList(null,null); //重新绑定数据(刷新列表)
1 是执行删除此条数据的动作。是从数据库中删除此条记录。你可以替换成你删除此条用户记录的方法
2 binduserlist这是重新加载绑定用户列表的数据的方法。 是重新把最新的数据绑定到datagridview上。显示出来你也要替换成你自己的方法。
或者你可以先把这两句注释了。再运行看一下效果。
首先拖一个按钮,注册一个点击事件
然后在事件方法里面将选中行删除掉:如DataRow drChoose = ...;drChoose.Delete();
然后更新:比如:DataTable dt = ..; dt.Update();
当然你需要参考DataAdapter更新数据集的相关资料,其实挺简单的
百度吧!
我的 WindowsForm 只是忽略了一些代码行,我不知道为啥?
【中文标题】我的 WindowsForm 只是忽略了一些代码行,我不知道为啥?【英文标题】:My WindowsForm just ignore some code lines and I don't know why?我的 WindowsForm 只是忽略了一些代码行,我不知道为什么? 【发布时间】:2021-01-21 13:21:54 【问题描述】:我一直在用 C# 编写一个关于 VS 的软件。这是我其他人制作的旧程序,但我认为我的问题出在我的代码中。在这个软件中,有两个Form,第一个获取一些数据,第二个进行操作并提供我使用的数据的报告。
double sum = 0;
for (int k = 0; k <= length - 1; )
sum += Convert.ToDouble(pisteA[k]);
k += 1;
double average = sum / 3;
我有一个包含第二种形式的文本和空值的数组。我只想对这个数组进行平均,所以使用 for 循环,我做了我必须做的事情。但是,当我启动我的软件时,它不会通过行代码并停在这一行。
sum += Convert.ToDouble(pisteA[k]);
当我使用断点查看发生了什么时,代码会经过这一行,然后转到我的其他表单执行:
formImpression.Show();
为了测试一些东西,我在 sum 行之后和之前添加了一个 MessageBox.Show,似乎软执行了问题行上方的代码,但不是在这之后的代码。
我真的不知道发生了什么。
编辑:为了对我使用的代码有更多的理解,我把它留在这里。
String[] varGen = formulaire.Form1.varG.piste1, formulaire.Form1.varG.piste2, formulaire.Form1.varG.piste3, formulaire.Form1.varG.piste4, formulaire.Form1.varG.modulesPiste1, formulaire.Form1.varG.modulesPiste2, formulaire.Form1.varG.modulesPiste3, formulaire.Form1.varG.modulesPiste4 ;
TextBox[] pisteA = mesure1, mesure2, mesure3, mesure4, mesure5, mesure6, moyenne1 ;
TextBox[] pisteB = mesure7, mesure8, mesure9, mesure10, mesure11, mesure12, moyenne2 ;
TextBox[] pisteC = mesure13, mesure14, mesure15, mesure16, mesure17, mesure18, moyenne3 ;
TextBox[] pisteD = mesure19, mesure20, mesure21, mesure22, mesure23, mesure24, moyenne4 ;
double moyenne = 0;
int indexMesures = 0;
bool presencepn = false;
for (int n = 0; n < dataGridView1.Rows.Count; n++)
if (formulaire.Form1.varG.pn == dataGridView1.Rows[n].Cells[0].Value.ToString() & formulaire.Form1.varG.pn != null)
presencepn = true;
//Initialisation
object module_A1 = dataGridView1.Rows[n].Cells[1].Value;
object module_A2 = dataGridView1.Rows[n + 1].Cells[1].Value;
object module_A3 = dataGridView1.Rows[n + 2].Cells[1].Value;
object module_D1 = dataGridView1.Rows[n].Cells[2].Value;
object module_D2 = dataGridView1.Rows[n + 1].Cells[2].Value;
object module_D3 = dataGridView1.Rows[n + 2].Cells[2].Value;
int moduleA1 = int.Parse(module_A1.ToString())-1;
int moduleA2 = int.Parse(module_A2.ToString())-1;
int moduleA3 = int.Parse(module_A3.ToString())-1;
int moduleD1 = int.Parse(module_D1.ToString())-1;
int moduleD2 = int.Parse(module_D2.ToString())-1;
int moduleD3 = int.Parse(module_D3.ToString())-1;
//Remplissage tableau sans exclusion
// Piste [1,2,3,4]
for (int j = 0; j < formulaire.Form1.varG.nbPistes; j++)
// Initialisation de la moyenne
moyenne = 0;
// Valeur pour la piste J
for (int i = 0; i < Convert.ToInt32(varGen[j + 4]); i++)
// Calcul de la moyenne
moyenne = moyenne + mesures[indexMesures];
// Choix de la piste
if (varGen[j] == "A")
pisteA[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
else if (varGen[j] == "B")
pisteB[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
pisteB[6].Text = Math.Round((moyenne / Convert.ToDouble(varGen[j + 4])), 3).ToString(); // Remplissage de la case moyenne
else if (varGen[j] == "C")
pisteC[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
pisteC[6].Text = Math.Round((moyenne / Convert.ToDouble(varGen[j + 4])), 3).ToString(); // Remplissage de la case moyenne
else if (varGen[j] == "D")
pisteD[i].Text = Math.Round(mesures[indexMesures], 3).ToString(); // Remplissage des mesures
pisteD[6].Text = Math.Round(moyenne / Convert.ToDouble(varGen[j + 4]), 3).ToString(); // Remplissage de la case moyenne
// Incrémentation de l'index des mesures
indexMesures += 1;
int length = pisteA.Length - 1;
//Suppression des modules exclus
for (int k = 0; k <= length; k++)
if (k == (moduleA1) | k == (moduleA2) | k == (moduleA3))
pisteA[k].Text = null;
for (int k = 0; k <= length; k++)
if (k == (moduleD1) | k == (moduleD2) | k == (moduleD3))
pisteD[k].Text = null;
double sum = 0;
for (int k = 0; k <= length - 1; )
sum += Convert.ToDouble(pisteA[k]);
k += 1;
double moyA = sum / 3;
pisteA[6].Text = Math.Round(moyA).ToString();
【问题讨论】:
尝试检查 Windows 偶数日志。 它说我的代码没有任何问题。 也许它抛出了一个异常。是否有 try/catch 块? 不在这部分代码中。你想让我发布我所有的代码吗?也许它会帮助你了解发生了什么。 【参考方案1】:您是否检查了此设置以查看异常情况?
【讨论】:
我真的不知道如何访问你给我看的窗口,我使用的是 VS 2010,所以它已经很老了.. 尝试菜单Debug -> Windows -> Exception Settings,可能是VS 2010中的相同路径 自从你给我看那个窗口后,我已经搜索过了,但不幸的是,我似乎找不到它。 所以在 VS 2010 中,它有点不同:菜单 Debug + Exceptions 并检查“Common Language Runtime Exceptions”行的“Thrown”和“User-unhandled”。看最后一个答案link 谢谢你,我检查了你所说的,当我运行我的软件时,我在我被阻止了一整天的那一行出现了错误。我会搜索这个问题,看看我能做什么。再次感谢!以上是关于C#在windowsform的datagridview表格里面添加一列删除按钮的主要内容,如果未能解决你的问题,请参考以下文章
每个工作班次 C# .NET WindowsForm 客户端控件的生产摘要图表