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.。正如你所看到的,我尝试了其他一些方法,但到目前为止没有成功。

Windows窗体-将新行添加到数据绑定数据中

尝试使用BindingList<MyData>而不是MyData[] arr。您对列表所做的任何修改都将反映在DGV中,不需要进一步的代码。(另外,将列表声明为表单的私有字段。)