c# - 在绑定(bind)源中复制记录

标签 c# .net winforms

我想学习一些 C#。所以我创建了一个Winforms。我使用数据集将表单连接到 SQL-Server 2008。 Form还有一个TableAdapter、一个TableAdapter、一个Bindingnavigator和一个Bindingsource。 表单上有一些文本框。

表单通过以下方式获取数据:

 private void Form1_Load(object sender, EventArgs e)
    {                                          
        this._CranesTableAdapter.Fill(this.dataSet1._Cranes); 
    }

我假设表适配器用记录填充了数据集中的表_Cranes。 我还有一些代码来添加新记录。

  this._CranesBindingSource.AddNew();
  this._CranesBindingSource.MoveLast();    

效果非常好。 但现在我想复制焦点所在的记录。

有人可以帮助我吗?我希望我的信息足够。

最佳答案

A BindingSource Encapsulates the data source for a form ;它不存储任何数据。所有数据都存储在 DataTableDataSet 中,为了与 DataBase 一起使用,其中包含称为 Tables 的 DataTable 集合; DataTable 最终将实际数据保存在 DataRows 中。

BindingSource 为您做的一件事是跟踪当前行并提供一种在行中向前和向后移动的机制。

(注意DataBinding不仅适用于DataBase数据,还适用于.Net中的各种数据容器!)

所以如果你想复制当前行,你可以这样做

  • 获取当前行的句柄
  • 获取表的句柄
  • 将行导入表中

对于您的CranesBindingSource,这将是代码:

DataRow cRow = (DataRow)CranesBindingSource.Current;
DataTable dt = (DataTable)CranesBindingSource.DataSource;
dt.ImportRow(cRow);  

这段代码假设DataSource是一个DataTable。如果它是一个 DataSet ,它包含一个表集合 Tables ,您必须使用相应的表或索引到集合中,如下所示:

DataTable dt = (DataTable)CranesBindingSource.DataSet.Tables[0];

之后,您可以根据需要更改数据,尤其是 key 。

关于c# - 在绑定(bind)源中复制记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063449/

相关文章:

c# - 使用 zxing 所需的二维码检测器示例

c# - Image.FromFile 为无效图像格式抛出 OutOfMemoryException 是否有原因?

.net - 存储过程,在返回给客户端之前将结果存储在另一个表中

c# - WPF 自定义 TextTrimming

c# - OpenSSL .NET c# 包装器 X509 认证

c# - 在一个场景中渲染多个对象DirectX C#

c# - 如何在一张图片中找到另一张图片?

.net - 字典类型的问题,如果给定一个特定的文本然后得到等效的字典键或字典值?

c# - DataGridViewComboBoxColumn 中的选定项始终检索第一个值

c# - 将 using 语句与 WinForms 一起使用……好的做法?