[英]How to get all the rows from DataGrid in WPF
我的WPF应用程序中有一个DataGrid,我想通过单击按钮来获取列表中的所有行值。 我尝试了一些方法,但只得到最后一行的值...
private async void Save_Btn_Click(object sender, RoutedEventArgs e)
{
pojo rowdata = new pojo();
int rowcount = calendarmstrDG.Items.Count;
List<pojo> pojolist = new List<pojo>();
var rows = (calendarmstrDG).SelectedItems;
for (int i = 1; i < rowcount - 1; i++)
{
pojo sda = (pojo)calendarmstrDG.SelectedItems;
pojolist.Add(sda);
}
}
这里calendarmstrDG是我的数据网格名称... pojo是我的模型类名称...
public class pojo
{
public string Prefix { get; set; }
public int Year { get; set; }
public int Quarter { get; set; }
public int SerialNo { get; set; }
public string From { get; set; }
public string To { get; set; }
public string PeriodName { get; set; }
}
使用foreach
循环遍历所有项目:
foreach(pojo p in calendarmstrDG.Items)
{
// do something with "p", e.g. access properties: p.SerialNo
}
DataGrid.Items集合包含类型为object
元素,因此在foreach
循环中,我们必须指定准确的类型pojo
才能访问属性
如果您需要获取新的pojo
列表,可以使用Linq完成:
List<pojo> list = calendarmstrDG.Items.OfType<pojo>().ToList();
您可以使用ObservableCollection
将数据绑定到DataGrid,并且可以毫不费力地使用它检索数据。 像这样的东西:
Class MyClass
{
ObservableCollection<pojo> myCollection {get;set;}
MyClass()
{
calendarmstrDG.DataContext = myCollection;
}
public void AddData()
{
myCollection.Add(new pojo(){ // Add Values });
}
public void Save_Btn_Click(object sender, RoutedEventArgs e)
{
foreach(pojo items in myCollection)
{
// here get items using items.Prefix/year/....
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.