c# Winform DataGridView添加新行

本文关键字:新行 添加 DataGridView Winform | 更新日期: 2023-09-27 18:05:56

我想添加一个新项目到我的datagridview。我知道可以使用几个文本框和一个按钮来实现这一点。当用户单击此按钮时,它将向数据库中添加一个新项目并刷新我的datagridview。

我想知道我是否可以使用我的datagridview的最后一行来添加一个新项目。我该怎么做呢?

c# Winform DataGridView添加新行

您是否使用了RAD-Databind(您的winforms上的数据源)?如果是这样的话,这可能有点棘手。您应该在单独的层中加载数据(如果可以的话,不要在代码隐藏层中)。然后,在本地数据中添加另一行应该相当简单。

如你所问:这是一个非常简单的样品。我使用相同的通用数据:

public struct SimpleData
{
    public int Id { get; set; }
    public string Text { get; set; }
}

并通过:

初始化名为GridView的DataGridView
        var bindingSource = new BindingSource();
        bindingSource.Add(new SimpleData {Id = 1, Text = "Hello"});
        bindingSource.Add(new SimpleData {Id = 2, Text = "World"});
        GridView.DataSource = bindingSource;

则可以通过

添加另一行
        var data = GridView.DataSource as BindingSource;
        data.Add(new SimpleData{Id=3, Text="!!! added"});
在现实世界的例子中,我会使用一些众所周知的模式:MVVM用于Winforms或MVP的Winforms将视图从逻辑中分离出来。但毕竟重要的一点是使用某种Bindingsource(通知Grid数据已经更改)或将更改的数据传递到数据源,如果您选择使用List或类似的浅层/简单数据容器。

或者,

你可以将你的DataGridView绑定到一个泛型。WrapperObject的列表(或者任何你想要调用的类),其中WrapperObject的每个实例可以表示数据库中已经存在的记录之一并暴露其属性,或者表示'空白记录'。

在DataGridView的editingcontrolshow事件处理程序中,您可以确定用户是否在最后一行输入(因为它是唯一包含空白部分的行),并执行您需要做的任何事情以将部分添加到数据库中。

当你想更新DataGridView上的内容时,只需从你想要显示的记录中重新创建一个WrapperObjects的新列表,并添加一个来表示末尾的空白记录,这样它就会显示在底部,然后将DataGridView的数据源设置为新列表