You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:40:19