Windows窗体-将新行添加到数据绑定数据中
本文关键字:数据绑定 数据 添加 新行 窗体 Windows | 更新日期: 2023-09-27 17:57:51
我有一个带有dgv的Windows Form
。现在它只是为了表示的目的,所以我使用伪数据来用数据填充一行。我还有一个名为Add New Row
的按钮,每次单击它都必须在dataGridView
中添加新的空行。对于dgv的初始填充,我使用如下形式的load
事件:
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = false;
MyData td13 = new MyData();
td13.colorCombinationColumn = "aff";
td13.remarksColumn = "abcdddd";
td13.prodColumn = true;
td13.LastModifiedColumn = "ab";
td13.ByColumn = "abc";
MyData[] arr = new MyData[2];
arr[0] = td13;
dataGridView1.DataSource = arr;
}
其中MyData
是此类:
public class MyData
{
private int mId;
private string mCombination;
private string mremarks;
private bool mprod;
private string mLastModified;
private string mBefore;
public int Id
{
get
{
return mId;
}
set
{
...
到目前为止还不错,但后来我添加了我的按钮并处理了他的click
事件:
private void btnAddRow_Click(object sender, EventArgs e)
{
SoleData[] arr = new SoleData[1];
dataGridView1.DataSource = arr;
}
这就是问题所在。如果我只是说dataGridView1.Rows.Add(1);
就是说Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
。正如你所看到的,我尝试了其他一些方法,但到目前为止没有成功。
尝试使用BindingList<MyData>
而不是MyData[] arr
。您对列表所做的任何修改都将反映在DGV中,不需要进一步的代码。(另外,将列表声明为表单的私有字段。)