You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

一对多关联场景下如何打开新窗口并传递多统计值?

一对多场景下向新窗口传递多统计值的实现方案

一、确定需要传递的内容

结合你的数据库表结构(Tbl_cardhall为对象信息表,tbl_stat为统计数据表),有两种可选的传递内容:

  • 选中对象的唯一标识:比如Tbl_cardhall的主键(如CardHallId),新窗口通过这个ID从数据库查询对应的所有tbl_stat统计数据。
  • 预查询好的统计数据集合:直接传递当前选中Tbl_cardhall对应的所有tbl_stat实体集合,新窗口可直接使用,无需额外数据库操作。

二、具体传递实现方式

方式1:通过构造函数传递统计数据集合(推荐,直接高效)

先定义统计窗口类,接收统计集合作为构造参数:

// 统计窗口类
public partial class StatWindow : Window
{
    private IEnumerable<tbl_stat> _statData;

    // 构造函数接收统计集合
    public StatWindow(IEnumerable<tbl_stat> statData)
    {
        InitializeComponent();
        _statData = statData;
        // 将数据绑定到UI控件(示例为DataGrid)
        statDataGrid.ItemsSource = _statData;
    }
}

在主窗口的点击事件中,先查询选中对象对应的所有统计数据,再传递给新窗口:

private void ClickShowStats(object sender, RoutedEventArgs e)
{
    // 假设你有数据库上下文对象dbContext
    var statList = dbContext.tbl_stat
        .Where(s => s.CardHallId == SelectedCardhall.Id)
        .ToList();
    
    // 创建统计窗口并传递数据
    StatWindow statWindow = new StatWindow(statList);
    statWindow.Show();
}

方式2:通过构造函数传递对象ID,新窗口自行查询数据

如果希望统计窗口独立处理数据查询,可传递选中对象的主键:

// 统计窗口类
public partial class StatWindow : Window
{
    public StatWindow(int cardHallId)
    {
        InitializeComponent();
        // 窗口初始化时查询数据
        using(var dbContext = new YourDbContext())
        {
            var statData = dbContext.tbl_stat
                .Where(s => s.CardHallId == cardHallId)
                .ToList();
            statDataGrid.ItemsSource = statData;
        }
    }
}

主窗口点击事件调用:

private void ClickShowStats(object sender, RoutedEventArgs e)
{
    // 传递选中对象的主键ID
    StatWindow statWindow = new StatWindow(SelectedCardhall.Id);
    statWindow.Show();
}

三、补充说明

如果你的SelectedCardhall已通过导航属性关联了tbl_stat集合(类似你之前用的CardPavNavigation),可以直接传递关联集合,无需额外查询:

StatWindow statWindow = new StatWindow(SelectedCardhall.tbl_statNavigation);
statWindow.Show();

推荐使用第一种方式,将数据查询逻辑放在主窗口或专门的数据服务类中,统计窗口仅负责展示数据,符合单一职责原则。

内容的提问来源于stack exchange,提问作者Roody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:12:51