如何在WPF中使用EntityFramework将数据绑定到DataGridView

时间:2018-12-10 13:30:20

标签: c# wpf data-binding entity-framework-6 wpf-controls

我在数据库(SQL Server)中使用了存储过程

select namebuffet,namefamilymember,idmember,Sum(finalpricefactorbuffet)-Sum((delivery*30)/100) as Price from Buffet_factorbuffet
 Inner join Buffet_buffet
 on idbuffet=buffetidfactor
 Inner join Member_member
 on idmember=memberid
 inner join Buffet_banktransaction
 on factorid=idfactorbuffet
 where success=1 And checkout!=2 And datecheckouted is null
 GROUP BY namebuffet,namefamilymember,idmember

然后我将其导入带有实体框架的WPF项目中,并编写这样的类

    public class Buffetinformation
        public List<Windows_BuffetInformation_Result> Getbuffetinformation ()
{
            using (MYDBEntities DB = new MYDBEntities())

                    var q = DB.Windows_BuffetInformation().AsQueryable();
                    return q.ToList();
}

我如何使用上述类将某些部分绑定到datagridview控制器 ,我的存储过程返回了一些列,例如(namebuffet,nameandfamilly,idmember和....),但我只想使用namebuffet和idmember并在我的datagridview或其他控制器中显示它们

我已经看到了使用ado.net的一些示例,但是我找不到实体框架的示例

2 个答案:

答案 0 :(得分:0)

您可能直接绑定到模型对象。在实现inotify属性已更改的视图模型中,将数据网格的itemssource绑定到公共属性Observablecollection。

observablecollection可以在其构造函数中使用List。 您的ToList()中有一个列表。 因此,您可以使用该属性将属性设置为所生成列表中的新observablecollection。

那将是一个非常基本的方法,因为您无处可放逻辑。 更常见的是迭代模型实例并新建行viewmodel,然后复制属性。我通常使用反射来复制匹配的属性。

但是,如果您只想“入门”。

https://social.technet.microsoft.com/wiki/contents/articles/28209.wpf-entity-framework-mvvm-walk-through-1.aspx?Redirected=true

答案 1 :(得分:0)

要将数据绑定到DataGrid,只需将结果列表绑定到DataGrid ItemsSource属性。仅显示一些部分主要是关于在XAML中设置数据网格。 首先,在定义DataGrid时,应将AutoGenerateColumns设置为False。然后,您应该定义一个DataGrid.Columns并为每列做一个明确的定义。像这样:

<DataGrid Name=MyDataGrid AutoGenerateColumns=False>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Id" Binding="{Binding idmember}"/>
        <DataGridTextColumn Header="Name" Binding="{Binding namebuffet}"/>
    </DataGrid.Columns>
</DataGrid>