C# 如何确保在datagridview中显示类别名称而不是id?

C# 如何确保在datagridview中显示类别名称而不是id?,c#,winforms,C#,Winforms,嘿,伙计们,我尝试开发的windows窗体应用程序需要你们的帮助,也就是说,我有一个组合框,它绑定到category表并正确显示category的名称,但当提交新记录时,然后,datagridview中只显示类别的Id,但我希望确保显示类别的名称,而不是Id。请看下图,我需要将int(类别的Id)更改为string(类别的名称),下面是我到目前为止的代码: using System; using System.Collections.Generic; using System.Component

嘿,伙计们,我尝试开发的windows窗体应用程序需要你们的帮助,也就是说,我有一个组合框,它绑定到category表并正确显示category的名称,但当提交新记录时,然后,datagridview中只显示类别的Id,但我希望确保显示类别的名称,而不是Id。请看下图,我需要将int(类别的Id)更改为string(类别的名称),下面是我到目前为止的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ТестовоеЗадание.DAL;

namespace ТестовоеЗадание
{
    public partial class РасходыForm : Form
    {

        private DatabaseEntities db = new DatabaseEntities();
        Расходы model = new Расходы();

        public РасходыForm()
        {
            InitializeComponent();

        }

        private void Расходы_Load(object sender, EventArgs e)
        {
            PopulateComboboxWithDataGrid();

        }
       void PopulateComboboxWithDataGrid()
        {
            dataGridView1.DataSource = db.Расходы.ToList();
            cbxCategory.DataSource = db.КатегорииЗатрат.ToList();
            cbxCategory.ValueMember = "Id";
            cbxCategory.DisplayMember = "Наименование";


        }


        private void btnCancel_Click(object sender, EventArgs e)
        {

        }


        private void btnDelete_Click(object sender, EventArgs e)
        {

            if (MessageBox.Show("Уверены что хотите удалить эту категорию?", "Удаление", MessageBoxButtons.YesNo) == DialogResult.Yes)

            {
                {
                    var entry = db.Entry(model);
                    if (entry.State == EntityState.Detached)

                        db.Расходы.Attach(model);
                    db.Расходы.Remove(model);
                    db.SaveChanges();

                    MessageBox.Show("Запись была удалена");

                }
            }
                }

        private void btnCreate_Click(object sender, EventArgs e)
        {
            model.Период = dtp.Value;
            model.Стоимость = decimal.Parse(tbxCost.Text);
            model.КатегорииЗатратId =(int)(cbxCategory.SelectedValue);
            model.Комментарий = tbxComments.Text;
            db.Расходы.Add(model);
           db.SaveChanges();
            MessageBox.Show("Запись успешно сохранена");

        }
    }
}

根据你的问题,,您必须使用实体关系作为categoryId的外键,并使用内部联接或联接查询来访问两个表中的数据。这样,您将能够在Datagridview中查看类别表中的类别名称,就像我使用带有内部联接的存储过程来解决问题一样,如下所示。检查工作和测试结果是否正常给你看

数据库表是我根据您的问题设计的

实体关系图 使用主外部关系作为成本表categoryID的ID 存储过程具有内部联接以访问两个表之间的数据

调用存储过程(使用实体数据模型)获取datagridview中的数据,如下所示

输出结果将类别名称显示为catName

您必须在datagridview或combobox中显示类别名称吗?请来信details@ershoaib你好感谢您的关注,我需要在DataGridViewDos中显示类别名称以显示您的
db提供表中的所有列,请检查?bcoz datagridview显示了
dataGridView1中提供的所有列。DataSource
@ershoaib是的,它显示了数据库中的所有数据。请查看我上面所附的图片。只需点击“图片” link@mir433请接受回答谢谢您的关注和回复,但是否有一种解决方案,只需说datagridview来显示字符串值而不是int-valuelookup到具有内部联接的存储过程,并将catName显示为字符串而不是int-catID。或者通过将int-valuelookup传递为参数