我在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>();
}
}