我想学习一些 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 ;它不存储任何数据。所有数据都存储在 DataTable
或 DataSet
中,为了与 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/