C#:如何通过BindingSource将文本框值添加为DataGridView新行且不影响选中行
解决方案:修改创建按钮逻辑实现直接添加文本框值为新行
要实现点击创建按钮时直接将文本框现有值添加为新行,且不影响当前选中行,你可以按以下逻辑修改创建按钮的代码:
// 1. 取消当前待编辑状态,避免文本框内容意外修改选中行 myBindingSource.CancelEdit(); // 2. 添加新行并获取行对象(根据数据源类型选择转换,这里以DataRowView为例) var newRow = myBindingSource.AddNew() as DataRowView; // 3. 将文本框值赋值给新行的对应字段 if (newRow != null) { newRow["列名1"] = txtInput1.Text; // 替换成你的实际列名和文本框控件 newRow["列名2"] = txtInput2.Text; // 依次赋值其他需要的字段 } // 4. 提交新行的编辑状态,确认新增行 myBindingSource.EndEdit(); // 5. 将新行保存到数据源 myTableAdapter.Update(myDataSet.myTable); // 6. 清空文本框 txtInput1.Clear(); txtInput2.Clear(); // 清空其他文本框
关键逻辑说明
- 先调用
CancelEdit():强制结束BindingSource当前可能存在的未提交编辑状态,彻底避免文本框的现有内容意外覆盖选中行的数据。 - 直接操作
AddNew()返回的行对象:通过给新行的字段赋值,跳过"先加空行再手动输入"的步骤,直接用文本框内容填充新行。 - 执行
EndEdit()和Update():确保新行的修改被提交到BindingSource,最终同步到数据库,不会出现新增空行的问题。
内容的提问来源于stack exchange,提问作者peppap1g
相关产品推荐
相关产品推荐

