繁体   English   中英

如何从WPF中的DataGrid获取所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM