C# WinForms点击按钮如何递增DataGridView对应行计数而非新增行
解决方案:实现点击按钮递增对应项计数而非新增行
你可以修改btnBread_Click方法的逻辑,先检查DataTable中是否已存在对应面包且餐桌为1的记录,存在则直接递增数量,不存在再新增行。同时不需要单独维护bread变量,直接从DataTable的行数据中取值更不容易出错:
int bread = 0; DataTable dt = new DataTable(); DataRow dr; private void Form1_Load(object sender, EventArgs e) { dt.Columns.Add("Food"); dt.Columns.Add("Amount", typeof(int)); // 明确指定列类型为int,避免类型转换问题 dt.Columns.Add("Table", typeof(int)); } private void btnBread_Click(object sender, EventArgs e) { // 查询是否已存在面包(Food等于按钮文本)且Table为1的行 DataRow[] existingRows = dt.Select($"Food = '{btnBread.Text}' AND Table = 1"); if (existingRows.Length > 0) { // 存在则递增Amount值 DataRow targetRow = existingRows[0]; targetRow["Amount"] = (int)targetRow["Amount"] + 1; } else { // 不存在则新增一行,计数初始化为1 dr = dt.NewRow(); dr["Food"] = btnBread.Text; dr["Amount"] = 1; dr["Table"] = 1; dt.Rows.Add(dr); } // 如果你的DataTable绑定了DataGridView等控件,需要刷新显示 // dataGridView1.DataSource = null; // dataGridView1.DataSource = dt; }
关键说明:
- 初始化DataTable列时明确指定
Amount和Table的类型为int,避免后续类型转换异常 - 使用
DataTable.Select()方法精准定位目标行,查询条件匹配食物名称和餐桌编号 - 不再依赖独立的
bread变量,直接从DataRow中读取和修改计数,保证数据一致性 - 如果DataTable绑定了UI控件(比如DataGridView),修改数据后需要重新绑定或刷新控件以更新显示
内容的提问来源于stack exchange,提问作者Nitu
相关产品推荐
相关产品推荐

