【问题标题】:populating a combobox when modifying an object修改对象时填充组合框
【发布时间】:2012-10-03 19:02:37
【问题描述】:

我会尽量做到直截了当。我在 datagridview 上有一个客户列表,而且我有一个表单,允许我添加新客户端或修改它。添加新客户端时我没有问题,但是在修改时我找不到填充某些文本框和组合框的方法。组合框应该显示城市,文本框应该显示地址。代码如下

 private void Modificar()
    {
        if (dgCliente.Rows.Count == 0)
        {
            return;
        }
        DataGridViewRow row = dgCliente.SelectedRows[0];
        Cliente cliente = (Cliente)row.Tag;


        tcClientes.SelectedTab = tpGeneral;
        //txtActividad.Text = cliente.Actividad;
        txtApellido.Text = cliente.Apellido;
        if (cliente.Categoria == Categoria.Cliente)
        {
            rbCliente.Checked = true;
        }
        else
        {
            rbProveedor.Checked = true;
        }

        txtCelular.Text = cliente.Telefono.Celular;
        txtTelefonoComercial.Text = cliente.Telefono.TelComercial;
        txtTelefonoDeposito.Text = cliente.Telefono.TelDeposito;
        txtTelPart.Text = cliente.Telefono.TelPart;
        txtFax.Text = cliente.Telefono.Fax;
        txtRazonSocial.Text = cliente.RazonSocial;
        txtCodigo.Text = cliente.Id.ToString();
        txtContacto.Text = cliente.Contacto;
        txtEmail.Text = cliente.Email;
        cliente.CuentaCorriente = new CuentaCorriente();
        txtCuenta.Text = cliente.CuentaCorriente.NumeroCuenta;
        cliente.Domicilio = new Domicilio();
        //cliente.Domicilio.Localidad.CodigoPostal = new CodigoPostal();
        txtCalle.Text = cliente.Domicilio.Calle;
        cliente.Domicilio.Localidad = new Localidad();
        SeleccionarLocalidad(cliente.Domicilio.Localidad);
        txtDepto.Text = cliente.Domicilio.Departamento;
        txtNumero.Text = cliente.Domicilio.Numero;
        txtPiso.Text = cliente.Domicilio.Piso;

        cliente.Domicilio.Localidad = GetLocalidadSeleccionada();
        //cliente.Domicilio.Localidad.Provincia = new Provincia();
        //txtProvincia.Text = cliente.Domicilio.Localidad.Provincia.NombreProv;
        //cliente.Domicilio.Pais = new Pais();
        //txtPais.Text = cliente.Domicilio.Localidad.Pais.NombrePais;            
        cliente.Identificacion = new Identificacion();
        txtNroDni.Text = cliente.Identificacion.Dni;
        txtCuit.Text = cliente.Identificacion.Cuit;
        txtNroCuil.Text = cliente.Identificacion.Cuil;
        txtNroCi.Text = cliente.Identificacion.Ci;
        txtNroLc.Text = cliente.Identificacion.Lc;
        txtNroLe.Text = cliente.Identificacion.Le;
        txtNombre.Text = cliente.Nombre;
        txtObservaciones.Text = cliente.Observaciones;
        txtPagWeb.Text = cliente.PagWeb;
        //cliente.Sexo = new Sexo();
        //cliente.Sexo = GetSexoSeleccionado();
        //cliente.SituacionIva = new SituacionIva();
        //cliente.SituacionIva = GetSituacionAnteIvaSeleccionada();
        txtObservaciones.Text = cliente.Observaciones;

        btnModificarCliente.Enabled = true;
        btnAceptar.Enabled = false;
        tsbGuardar.Enabled = false;
    }

    private void SeleccionarLocalidad(Localidad localidad)
    {
        cbbLocalidad.SelectedItem = localidad;
    }

修改客户信息时,电话、手机或传真的文本框填充了正确的数据,但文本框应显示地址 (domicilio) 而应该显示城市的组合框不是......我希望我足够清楚让你理解我的担忧。请提前帮助和谢谢。

【问题讨论】:

    标签: c# .net combobox


    【解决方案1】:

    这里是客户端类

    public class Cliente
        {
        public int Id { get; set; }
        public int Codigo { get; set; }
        public string Nombre { get; set; }
        public string Apellido { get; set; }
        public string RazonSocial { get; set; }
        public string Email { get; set; }
        public DateTime FechaIngreso { get; set; } 
        public Domicilio Domicilio { get; set; } // residencial
        public Domicilio DomicilioComercial { get; set; }
        public Domicilio DomicilioFiscal { get; set; } // para envio de facturas o tramites
        public Telefono Telefono { get; set; }
        public Telefono Celular { get; set; }
        public Telefono Fax { get; set; }
        public Telefono TelComercial { get; set; }
        public Telefono TelDeposito { get; set; }
        public string Contacto { get; set; }
        public SituacionIva SituacionIva { get; set; } // Si es resp. inscripto,monotributista o exento      
        public Identificacion Dni { get; set; }
        public Identificacion Cuil { get; set; }
        public Identificacion Cuit { get; set; }
        public Identificacion Lc { get; set; }
        public Identificacion Le { get; set; }
        public Identificacion Ci { get; set; }
        public ListaDePrecios ListaDePrecios { get; set; }
        public Vendedor Vendedor { get; set; }
        public string Actividad { get; set; }
        public Categoria Categoria { get; set; } // Si es cliente, provedor etc
        public Sexo Sexo { get; set; } // Masc o femenino        
        public string PagWeb { get; set; }
        public CuentaCorriente CuentaCorriente { get; set; }
        public string Observaciones { get; set; }
        public Identificacion Identificacion { get; set; }
    }
    

    }

    【讨论】:

    • 是否为 cbbLocalidad 控件分配了数据源和 DisplayMember、ValueMember 属性?
    【解决方案2】:

    我不确定这是否正确,但似乎这就是您的要求。此方法将允许您将文本插入到数据网格中的 ComboBox 单元格中。

        private void ChangeComboBoxCellItems(int RowIndex, int ColumnIndex,string TextToAdd)
        {
            //this line finds the correct row and cell
            DataGridViewComboBoxCell ComboBoxCell = (DataGridViewComboBoxCell)dataGridView1.Rows[RowIndex].Cells[ColumnIndex];
    
            //this line inserts the text into the combobox items
            ComboBoxCell.Items.Add(TextToAdd);
    
            //This sets the display text to the string you added to the combobox
            ComboBoxCell.Value = TextToAdd;
        }
    

    【讨论】:

    • 实际上不...当我使用 clienteditorform 添加新客户端时,我从组合框中选择客户端城市,该信息进入数据库和允许我过滤和修改的 datagridview客户。添加时一切都是正确的,但是在修改时,我希望 clienteditorform 填充客户端信息,以便我可以修改其数据。大多数数据实际上显示在文本框中,但地址和城市应该在组合框中自动填写,但不是。那是我的问题...谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2013-06-22
    • 2011-11-20
    • 2021-06-18
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多