X={ID="1", Name="XX",
ID="2", Name="YY" };
一个结构是如何将这些数据转储到两个DataGridView
一列
在GridView就像
ID | Name
我们可以使用LINQ来做到这一点。我是新来DataGridView
Pleaese帮我做这个..提前
X={ID="1", Name="XX",
ID="2", Name="YY" };
一个结构是如何将这些数据转储到两个DataGridView
一列
在GridView就像
ID | Name
我们可以使用LINQ来做到这一点。我是新来DataGridView
Pleaese帮我做这个..提前
感谢您首先需要2列添加到数据网格。你可以在设计时做到这一点。请参阅Columns属性。 然后根据需要添加行数。
this.dataGridView1.Rows.Add("1", "XX");
我在设计时添加了两列。现在我需要显示的数据在'网格视图' – 2010-10-13 11:31:51
谢谢...我需要遍历结构。所以我必须使用'for'或'foreach'循环。我们可以用'LAMBDA'表达这个吗? – 2010-10-13 11:38:35
是的。有很多选择。我想你可以使用数据绑定作为最好的 – Arseny 2010-10-13 12:38:15
LINQ是“查询”语言(那的Q),因此修改数据是它的范围之外。
也就是说,你的DataGridView
大概是绑定到ItemsSource
,也许类型ObservableCollection<T>
或类似。在这种情况下,只需执行如X.ToList().ForEach(yourGridSource.Add)
(这可能需要根据网格中源的类型进行调整)。
您务必做好像这种形式的代码
DataGridView.DataSource = yourlist;
DataGridView.DataBind();
我最喜欢的方式做,这是所谓的“地图”的扩展功能:
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));
让我们假设你有一个类像这样:
public class Staff
{
public int ID { get; set; }
public string Name { get; set; }
}
而且假设你已经拖放一个DataGridView
到您的表单,并将其命名为数据GridView1。
您需要一个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;
}
你不需要一个绑定源。您可以直接将列表分配给网格数据源。 – 2010-10-17 07:19:46
是的,我们不需要绑定源,我们可以直接将列表绑定到网格的数据源。使用绑定源的优点是,如果列表已更改/更新,我们可以稍后刷新绑定源。网格也会得到刷新。 – bla 2010-10-17 07:37:54
webforms?的WinForms? WPF? Silverlight的? – 2010-10-13 11:27:19