如何将数据添加到 DataGridView
Posted
技术标签:
【中文标题】如何将数据添加到 DataGridView【英文标题】:How to add data to DataGridView 【发布时间】:2011-04-24 19:08:46 【问题描述】:我有一个类似的结构
X=ID="1", Name="XX",
ID="2", Name="YY" ;
如何将此数据转储到两列的DataGridView
gridView 是这样的
ID | Name
我们可以使用 LINQ 来执行此操作吗?我是 DataGridView
的新手,请帮我做这件事..
提前致谢
【问题讨论】:
网络表单?表格? wpf?银光? 【参考方案1】:首先您需要向数据网格添加 2 列。您可以在设计时进行。请参阅列属性。 然后根据需要添加行。
this.dataGridView1.Rows.Add("1", "XX");
【讨论】:
我在设计时添加了两列。现在我需要在grid view
中显示数据
谢谢...我需要遍历结构。所以我必须使用for
或foreach
循环。我们可以为此使用LAMBDA
表达式吗?
是的。有很多选择。我想您可能会使用数据绑定作为最好的方法【参考方案2】:
假设你有这样一个类:
public class Staff
public int ID get; set;
public string Name get; set;
假设您已将 DataGridView
拖放到表单中,并将其命名为 dataGridView1。
您需要一个BindingSource 来保存您的数据以绑定您的DataGridView
。你可以这样做:
private void frmDGV_Load(object sender, EventArgs e)
//dummy data
List<Staff> lstStaff = new List<Staff>();
lstStaff.Add(new Staff()
ID = 1,
Name = "XX"
);
lstStaff.Add(new Staff()
ID = 2,
Name = "YY"
);
//use binding source to hold dummy data
BindingSource binding = new BindingSource();
binding.DataSource = lstStaff;
//bind datagridview to binding source
dataGridView1.DataSource = binding;
【讨论】:
您不需要绑定源。您可以将列表直接分配给网格数据源。 是的,我们不需要绑定源,我们可以直接将列表绑定到网格的数据源。使用 bindingsource 的优点是,如果列表已更改/更新,我们可以稍后刷新绑定源。网格也会得到刷新。 使用 System.ComponentModel.BindingList 以便列表通知 DataGridView 添加了一个项目等。【参考方案3】:我最喜欢的方法是使用名为“地图”的扩展函数:
public static void Map<T>(this IEnumerable<T> source, Action<T> func)
foreach (T i in source)
func(i);
然后你可以像这样添加所有行:
X.Map(item => this.dataGridView1.Rows.Add(item.ID, item.Name));
【讨论】:
【参考方案4】:LINQ 是一种“查询”语言(即 Q),因此修改数据超出了它的范围。
也就是说,您的DataGridView
可能绑定到ItemsSource
,可能是ObservableCollection<T>
或类似类型。在这种情况下,只需执行X.ToList().ForEach(yourGridSource.Add)
之类的操作(这可能必须根据网格中的源类型进行调整)。
【讨论】:
【参考方案5】:你应该在你的代码中这样做
DataGridView.DataSource = 你的列表;
DataGridView.DataBind();
【讨论】:
以上是关于如何将数据添加到 DataGridView的主要内容,如果未能解决你的问题,请参考以下文章