使用数据集中的 2 个表实现主从结构 (wpf)

发布于 2024-09-06 11:42:34 字数 288 浏览 8 评论 0原文

我创建了一个包含 2 个表的数据集: 用户(用户 ID、用户名、其他用户详细信息) 电子邮件(Id、UserId、UserEmail)

我使用 2 个 DataAdapter(每个表一个)填充数据集,

我有一个列表框、一些文本框和一个网格。 列表框获取所有用户,少数文本框在列表框中选择时显示用户详细信息(这很容易,因为它们都绑定到同一个表)。

网格应显示所选用户的电子邮件地址。

我如何使用绑定来做到这一点?是否可能或者我应该捕获选择更改事件并“手动”过滤网格(当前网格显示表中的所有电子邮件)。

I've created a dataset that contains 2 tables:
Users (userID, UserName, other user details)
Emails (Id, UserId, UserEmail)

I populate the dataset using 2 DataAdapters (one for each table)

I have a listbox, a few textboxes and a grid.
listbox gets all the users, the few textboxs displays the user details when picked in the list box (this is easy b/c they are both bound to the same table).

the grid should display the selected user's email addresses.

How do I do it using binding ? is it possible or should I catch the selection change event and filter the grid "manually" (currently the grid displays all the emails in the tables).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七色彩虹 2024-09-13 11:42:35

您可以拥有一个名为 SelectedUser 的属性,并将其绑定到 ListBox 的 SelectedItem。在属性的设置器中,您可以过滤绑定到网格的电子邮件列表。

但从长远来看,您可以使用 VS 中提供的一些 ORM 工具或 Linq-to-sql 从表中创建模型,这将创建模型及其关系。因此,当您拥有类似的内容时,

Class User
{
    UserId, UserName, List<Email> that user has
}

您可以创建一个 List 和一个 SelectedUser 属性,将其绑定到 UI 元素。

网格将绑定到 SelectedUser.Emails 因此一切都已绑定并且流程将正常工作。

You can have a property called SelectedUser and bind it to the SelectedItem of ListBox. In the setter of the property you can filter the email list that is bound to grid.

But in the long run, you can create models out of your tables using some ORM tools or Linq-to-sql available in VS which will create models and their relationship. Hence when you will have something like this

Class User
{
    UserId, UserName, List<Email> that user has
}

You can create a List<User> and a SelectedUser property which would be bound to the UI elements.

The grid would be bound to SelectedUser.Emails Hence everything is bound and the flow would work fine.

悟红尘 2024-09-13 11:42:34

如果您有一个包含所有电子邮件的集合,那么您可以尝试将网格的 ItemsSource 设为实现 ICollectionView 接口 - 这允许您对集合进行过滤、排序和分组...

您可以获得实现此功能的对象通过调用接口

var view = CollectionViewSource.GetDefaultView(myList);

If you have a collection that contains all the emails, then you could try looking at making the ItemsSource of your grid an object that implements the ICollectionView interface - this allows you to filter, sort and group your collection...

You can get an object that implements this interface by calling

var view = CollectionViewSource.GetDefaultView(myList);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文