c# Winform DataGridView添加新行
本文关键字:新行 添加 DataGridView Winform | 更新日期: 2023-09-27 18:05:56
我想添加一个新项目到我的datagridview。我知道可以使用几个文本框和一个按钮来实现这一点。当用户单击此按钮时,它将向数据库中添加一个新项目并刷新我的datagridview。
我想知道我是否可以使用我的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的数据源设置为新列表