从一个视图引用到另一个视图
Referencing from one view to another
我正在学习使用 Visual Studio、C# 和 Entity Framework 核心,我尝试创建一个 WPF 来编辑数据库中的条目。目前我使用 Adventureworks2014 数据库。
我有一个数据网格,它从我在 Microsoft SQL 服务器管理中创建的视图中获取数据。
public void PopulateDataGrid()
{
using (var db = new Adventureworks2014Context())
{
DG1.ItemsSource = db.SmallView.ToList<SmallView>();
}
}
当我双击我的 Datagrid 中的一个条目时,我希望该应用程序打开一个新的 window,其中显示了该人的数据。根据复选框的状态,我想使用其他视图
所以我想选择一个人,获取这个人的 ID 并在不同的视图中使用这个 ID 来获取我想要的数据。
这是我想出的(不起作用):
private void DG1DoubleClick(object sender, MouseButtonEventArgs e)
{
if (DG1.SelectedIndex != -1)
{
using (Adventureworks2014Context db = new Adventureworks2014Context())
{
SmallView smallView = (SmallView)DG1.SelectedItem; //getting the Data of a person
txtIdCreate.Text = Convert.ToString(smallView.BusinessEntityId); //just to check if i get an ID
NoAdminView noAdminView = new NoAdminView();
db.NoAdminView.FirstOrDefault(x => x.BusinessEntityId == smallView.BusinessEntityId);
TxtFirstName.Text = noAdminView.FirstName; //checking if i get anything from the other view
}
}
我的文本字段是空的,所以我没有从视图中获得正确的引用。
我也可以对我 need/will 需要的所有条目使用不同的视图,并且可以只显示特定的列,但这不是我尝试使用的方法,因为我认为当我能够“在两者之间切换”时它会非常有用views" 当我想要的时候,例如具有大量列的较大视图仅在需要时使用。当我唯一需要做的就是更改 ItemSource 时,它也可能非常有效。
当我在这里也错了时,很高兴知道为什么这个想法不正确。
很高兴收到一些反馈。
预先感谢您的宝贵时间。
如果你想使用EF-core从数据库中获取数据。
我建议你可以使用数据库优先。
首先,请安装以下nuget-package。
其次,请在软件包控制台中使用以下命令。
PM> Scaffold-DbContext "Server=server name;Database=AdventureWorks2014;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
三、生成文件夹后Models
,请在wpf app中尝试以下代码
public MainWindow()
{
InitializeComponent();
PopulateDataGrid();
}
public void PopulateDataGrid()
{
using (var db = new AdventureWorks2014Context())
{
var listentity = db.BusinessEntities.ToList<BusinessEntity>();
dataGrid1.ItemsSource = listentity;
}
}
private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (dataGrid1.SelectedIndex != -1)
{
using (AdventureWorks2014Context db = new AdventureWorks2014Context())
{
BusinessEntity entity = (BusinessEntity)dataGrid1.SelectedItem;
txtID.Text = Convert.ToString(entity.BusinessEntityId); //just to check if i get an ID
Person p= db.People.FirstOrDefault(x => x.BusinessEntityId == entity.BusinessEntityId);
txtFirstName.Text = p.FirstName; //checking if i get anything from the other view
}
}
}
结果:
我正在学习使用 Visual Studio、C# 和 Entity Framework 核心,我尝试创建一个 WPF 来编辑数据库中的条目。目前我使用 Adventureworks2014 数据库。
我有一个数据网格,它从我在 Microsoft SQL 服务器管理中创建的视图中获取数据。
public void PopulateDataGrid()
{
using (var db = new Adventureworks2014Context())
{
DG1.ItemsSource = db.SmallView.ToList<SmallView>();
}
}
当我双击我的 Datagrid 中的一个条目时,我希望该应用程序打开一个新的 window,其中显示了该人的数据。根据复选框的状态,我想使用其他视图
所以我想选择一个人,获取这个人的 ID 并在不同的视图中使用这个 ID 来获取我想要的数据。
这是我想出的(不起作用):
private void DG1DoubleClick(object sender, MouseButtonEventArgs e)
{
if (DG1.SelectedIndex != -1)
{
using (Adventureworks2014Context db = new Adventureworks2014Context())
{
SmallView smallView = (SmallView)DG1.SelectedItem; //getting the Data of a person
txtIdCreate.Text = Convert.ToString(smallView.BusinessEntityId); //just to check if i get an ID
NoAdminView noAdminView = new NoAdminView();
db.NoAdminView.FirstOrDefault(x => x.BusinessEntityId == smallView.BusinessEntityId);
TxtFirstName.Text = noAdminView.FirstName; //checking if i get anything from the other view
}
}
我的文本字段是空的,所以我没有从视图中获得正确的引用。
我也可以对我 need/will 需要的所有条目使用不同的视图,并且可以只显示特定的列,但这不是我尝试使用的方法,因为我认为当我能够“在两者之间切换”时它会非常有用views" 当我想要的时候,例如具有大量列的较大视图仅在需要时使用。当我唯一需要做的就是更改 ItemSource 时,它也可能非常有效。
当我在这里也错了时,很高兴知道为什么这个想法不正确。
很高兴收到一些反馈。 预先感谢您的宝贵时间。
如果你想使用EF-core从数据库中获取数据。
我建议你可以使用数据库优先。
首先,请安装以下nuget-package。
其次,请在软件包控制台中使用以下命令。
PM> Scaffold-DbContext "Server=server name;Database=AdventureWorks2014;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
三、生成文件夹后Models
,请在wpf app中尝试以下代码
public MainWindow()
{
InitializeComponent();
PopulateDataGrid();
}
public void PopulateDataGrid()
{
using (var db = new AdventureWorks2014Context())
{
var listentity = db.BusinessEntities.ToList<BusinessEntity>();
dataGrid1.ItemsSource = listentity;
}
}
private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (dataGrid1.SelectedIndex != -1)
{
using (AdventureWorks2014Context db = new AdventureWorks2014Context())
{
BusinessEntity entity = (BusinessEntity)dataGrid1.SelectedItem;
txtID.Text = Convert.ToString(entity.BusinessEntityId); //just to check if i get an ID
Person p= db.People.FirstOrDefault(x => x.BusinessEntityId == entity.BusinessEntityId);
txtFirstName.Text = p.FirstName; //checking if i get anything from the other view
}
}
}
结果: