这是我在注册表中的代码:
public override void Guardar()
{
if (ValidarCampos() == true)
{
try
{
if (MessageBox.Show("Desea guardar este registro?", "Mensaje", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
using (DBEntities db = new DBEntities())
{
bool contactExists = db.cliente.Any(o => o.nombre_cliente.Equals(txtRegCliente.Text));
if (contactExists)
{
MessageBox.Show("El cliente ingresado ya existe");
txtRegCliente.Clear();
return;
}
else
{
if (cliente_id == null)
oCliente = new cliente();
oCliente.nombre_cliente = txtRegCliente.Text;
oCliente.vendedor_id = Convert.ToInt32(cbRegVendedor.SelectedValue);
oCliente.tipo_cliente_id = Convert.ToInt32(cbRegTipoCliente.SelectedValue);
if (cliente_id == null)
{
db.cliente.Add(oCliente);
}
else
{
db.Entry(oCliente).State = EntityState.Modified;
}
db.SaveChanges();
MessageBox.Show("Se ha guardado correctamente");
this.Close();
}
}
}
}
catch (Exception error)
{
MessageBox.Show("Ha ocurrido un error: " + error.Message);
}
}
}
我有2个按钮,“新建”和“编辑”,都打开相同的窗口形式。如果单击“新建”,则文本框和组合框是干净的,如果是“编辑”,则将使用数据库中的值打开表单。当它是“ New”但它是“ Edit”并且我想修改另一个不是“ nombre_cliente”的文本框时,它可以正常工作,我收到一条消息:“客户已经存在”。如果在“ New”和“ Edit”两种情况下数据库中都已经存在especific文本框“ nombre_cliente”,我只想返回到表单,我正在使用Windows窗体,EF数据库,C#
编辑:
这是我的第一个表格:
这是代码(解决我的问题的重要部分):
private int? GetId()
{
try
{
return int.Parse(dgvTablas.Rows[dgvTablas.CurrentRow.Index].Cells[0].Value.ToString());
}
catch
{
return null;
}
}
#endregion
public override void Nuevo()
{
Presentation.FrmRegCliente oCliente = new Presentation.FrmRegCliente();
oCliente.ShowDialog();
Refrescar();
}
public override void Editar()
{
int? cliente_id = GetId();
if (cliente_id != null)
{
Presentation.FrmRegCliente oCliente = new Presentation.FrmRegCliente(cliente_id);
oCliente.ShowDialog();
Refrescar();
}
}
第二个用于添加或编辑记录的表格:
以及我一开始跳过的代码部分:
public partial class FrmRegCliente : FrmBaseGuardar
{
public int? cliente_id;
cliente oCliente = null;
public FrmRegCliente(int? cliente_id = null)
{
InitializeComponent();
this.cliente_id = cliente_id;
if (cliente_id != null)
CargaDatos();
else
{
CargarVendedor();
CargarTipoCliente();
}
}
private void CargaDatos()
{
CargarVendedor();
CargarTipoCliente();
using (DBEntities db = new DBEntities())
{
oCliente = db.cliente.Find(cliente_id);
cliente_id = oCliente.cliente_id;
txtRegCliente.Text = oCliente.nombre_cliente;
cbRegVendedor.SelectedValue = Convert.ToInt32(oCliente.vendedor_id);
cbRegTipoCliente.SelectedValue = Convert.ToInt32(oCliente.tipo_cliente_id);
}
}
//按钮“ Guardar”代码 PD:对不起,如果我的语法不正确,英语不是我的母语