在运行时更改DataGridView列映射

时间:2019-12-04 15:52:12

标签: c# winforms datagridview

我在C#的Windows窗体应用程序的DataGridView中有一个表。 DataGridView连接到MySql Management Studio中的SQL数据库,我使用Windows窗体在SQL数据库中执行更新,删除和创建操作。

我想更改保存数据的列;基本上将DataGridView中的“ first_name”列映射到“ last_name”列,反之亦然。我希望这种情况在运行时发生,并且数据应相应地反映在SQL数据库中。

当前我有以下代码:

 private void dataMapping()
    {
        dgvPeople.Columns[2].DataPropertyName = "last_name";
        dgvPeople.Columns[3].DataPropertyName = "first_name";
    }

    private void btnSave_Click(object sender, EventArgs e) //this happens when you click the button "save"
    {
        dataMapping();

        model.first_name = txtFName.Text.Trim();
        model.last_name = txtLName.Text.Trim();
        model.company_name = txtCName.Text.Trim();
        model.address = txtAddress.Text.Trim();
        model.city = txtCity.Text.Trim();
        model.state = txtState.Text.Trim();
        model.phone = txtPhone.Text.Trim();
        model.email = txtEmail.Text.Trim();

        using (db = new DBEntities())
        {
            if (model.ID == 0) //Insert into table
            {
                db.Infoes.Add(model);
            }
            else //Update in table
            {
                db.Entry(model).State = EntityState.Modified;
            }            
            db.SaveChanges();
        }
        Clear();
        PopulateDataGridView(); //refreshes and populates the DataGridView
        MessageBox.Show("Submitted Successfully");
    }

正在发生的是,DataGridView暂时在“姓氏”列的“名字”中显示该条目,反之亦然。但是,SQL数据库没有反映此更改,因此实际上没有发生任何更改。

我希望能够在运行时将一列映射到另一列,而不是通过在设计视图中手动编辑DataGridView的列来实现。

上下文:

Info model = new Info(); 
DBEntities db; 
void PopulateDataGridView() //this function populates view on the data grid
    {
        using (db = new DBEntities())
        {
            dgvPeople.DataSource = db.Infoes.ToList<Info>();
        }
    }
  • 信息是SQL表名称
  • 模型是表格对象
  • dgvPeople是DataGridView名称

0 个答案:

没有答案