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

C# 1对1关联场景下选中患者行后在新GridView展示对应病历的问题

问题根源

你新增的Where过滤条件q => q.C_PatientID == q.Patient.PatientID对所有合法关联的病历记录都恒成立——因为C_PatientID本身就是病历表关联患者表主键的外键,该条件没有引入外部的选中患者ID作为过滤基准,相当于没有加过滤规则,所以查询结果还是所有患者的病历数据。

调整方案

第一步:改造查询逻辑,支持传入选中患者ID过滤

修改PopulateGrid方法,增加可选的患者ID参数,根据参数是否存在决定是否加过滤条件:

private void PopulateGrid(int? selectedPatientId = null)
{
    // 基础查询
    var query = _db.GeneralMedicalHistories.AsQueryable();

    // 传入了选中的患者ID时,添加过滤条件
    if (selectedPatientId.HasValue)
    {
        query = query.Where(q => q.C_PatientID == selectedPatientId.Value);
    }

    // 映射查询结果
    var records = query.Select(q => new
    {
        PatientNumber = q.GeneralMedicalHistoryID,
        MaritalStatus = q.MartialStatus,
        Education = q.Education,
        BloodType = q.BloodType,
        Pregenancies = q.Pregnancies,
        Tobacco = q.Tobacco,
        Alcohol = q.Alcohol,
        Drug = q.Drug,
        MedicalHistoryNotes = q.MedicalHistoryNotes,
    }).ToList();

    // 绑定表格
    gvDemographics.DataSource = records;
    gvDemographics.Columns["PatientNumber"].HeaderText = "Patient#";
    gvDemographics.Columns["MaritalStatus"].HeaderText = "Marital Status";
    gvDemographics.Columns["BloodType"].HeaderText = "Blood Type";
    gvDemographics.Columns["MedicalHistoryNotes"].HeaderText = "Medical History Notes";
    gvDemographics.Columns["PatientNumber"].Visible = true;
}

第二步:适配调用逻辑

  • 应用启动需要展示全部病历数据时,直接调用无参的PopulateGrid()即可
  • 选中患者后点击查询按钮的事件中,先从患者列表的选中行获取对应患者的主键PatientID,再将该ID作为参数传入PopulateGrid方法调用,示例逻辑如下:
// 查询按钮点击事件逻辑
private void btnQueryMedicalHistory_Click(object sender, EventArgs e)
{
    // 从患者列表选中行取PatientID,此处控件名请替换为你实际使用的患者列表控件名
    if (gvPatientList.SelectedRows.Count == 0) return;
    int selectedPatientId = (int)gvPatientList.SelectedRows[0].Cells["PatientID"].Value;
    // 调用方法过滤查询
    PopulateGrid(selectedPatientId);
}

注意事项

需确认患者列表中取出的PatientID字段类型和病历表C_PatientID字段类型完全匹配,避免类型转换或值匹配失败导致过滤失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:00