我想在我的datagridview中添加一个新项目。我知道可以使用几个TextBoxes和一个Button来实现这一点。当用户单击此按钮时,它将向数据库中添加一个新项目并刷新我的datagridview。
我想知道我是否可以使用datagridview的最后一行添加新项目。我怎么能这样做?
答案 0 :(得分:2)
您是否使用了RAD-Databind(winforms上的DataSource)?如果是这样可能有点棘手。 您应该在单独的图层中加载数据(如果可以帮助,则不在代码隐藏中)。那么在本地数据中添加另一行应该相当简单。
正如您所问:这是一个非常简单的示例。 我使用相同的通用数据:
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 for Winforms 或MVP for Winforms 从逻辑中分离视图。但是,如果你选择使用像List或类似的浅/简单datacontainer,那么重要的一点就是使用某种Bindingsource(告知Grid数据已经改变)或者将更改的数据重新分配给DataSource。
答案 1 :(得分:0)
或者,
您可以将DataGridView绑定到WrapperObject的Generic.List(或任何您想要调用的类),其中WrapperObject的每个实例可以代表数据库中已有的记录之一并公开其属性,或者表示'空白记录'。
在DataGridView的EditingControlShowing事件处理程序中,您可以确定用户是否在最后一行上键入(因为它是包含空白部分的唯一行)并执行任何操作以将部件添加到数据库中。
如果要更新DataGridView上的内容,只需从要显示的记录中重新创建一个新的WrapperObjects列表,然后添加一个表示最后的空白记录,这样它就会显示在在底部,然后将DataGridView的数据源设置为新列表。