• Viernes 3 de Mayo de 2024, 17:39

Autor Tema:  DataGridView con columnas tipo DataGridViewComboBox  (Leído 5793 veces)

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
DataGridView con columnas tipo DataGridViewComboBox
« en: Martes 10 de Agosto de 2010, 17:04 »
0
Hola a todos, por favor ayudenme con este caso, la verdad esoty un poco desesperada con el manejo de los Datagridview, aunque ya han sido muchos los inconvenientes que he logrado superar. Pero les pido me ayuden con este caso que estoy perdida.
tengo mi DatagridView con dos columnas. Una es tipo TexBox y la otra es  DataGridViewComboBox. Ya logre hacer el proceso para salvar en mi base de datos (oracle) los datos qu habia registrado en el DataGrdiView.
supongan que ayer salve mis datos y hoy quiero simplemente abrir  mi WinForm y se desplieguen en mi DatagridView, la información que salve ayer.
El problema que tengo es que no se como mostrar los datos que corresponden a la columna  DataGridViewComboBox.

1. Lo primero que hice fue crear un método para cargar el DataSource de mi DataGridView (listarFacturasAdmin) . El método me devuelve un DataTable.
2. En el Load de mi Form, cargo el DataSource del DataGridView2.

Cuando corro mi programa, me dice "Se produjo la siguiente excepcion en DataGridView:System.ArgumentException:El Valor del DataGridViewComboBoxCell no es válido.
En verdad agradezco si me pueden ayudar con este lio.
Código: C#
  1.  
  2.  private void frmAdmonSaldos_Load(object sender, EventArgs e)
  3.         {
  4.             try
  5.             {
  6.                     Cursor.Current = Cursors.WaitCursor;
  7.                     dataGridView2.DataSource = new CarteraNG().listarFacturasAdmin(conexionOracle, tbcampoConsulta, consecutivo);
  8.              }
  9.             catch (Exception ex)
  10.             {
  11.                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  12.             }
  13.         }
  14.  
  15.  

Painkiller

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: DataGridView con columnas tipo DataGridViewComboBox
« Respuesta #1 en: Miércoles 11 de Agosto de 2010, 17:41 »
0
Que tal, al parecer el error se debe a que guardas el valor seleccionado en la BD (puede ser string, int etc) y al tratar de recuperarlo no se agrega directamente al comobobox. Asi que aqui yo pensaria en guardar de manera local una lista de todos los valores posibles en el combobox ya sea en el registro, en xml, o en algun archivo, y al momento de tener el DataTable comparar directamente con estos valores para asi settear cada combobox a su respectivo valor guardado en la BD.

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Re: DataGridView con columnas tipo DataGridViewComboBox
« Respuesta #2 en: Miércoles 11 de Agosto de 2010, 18:58 »
0
hola uiii que es esta dicha ...  :rolleyes: gracias por tu pronta respuesta.
 Estuve revisando este punto y mi comboBox es tipo string y el dato que esoty recuperando es string. Se que el DataGridViewComboBox, al igual que un comboBox tiene las propiedades ValueMember ,DisplayMember y Value que es finalmente dato que muestra en la celda. Sin embargo no logré ponerlo a funcionar, por mas que busque en internet alternativas , no encontre nada que me diera mas pistas.
Hice algunos cambios y fué cargar los datos en una lista lmostrarAdmin y crear un método que recorra la lista para ir adicionando filas al DataGrdiView, pero sigo con el mismo problema. Los datos que tiene el problema son admintr.Nombredivision,admintr.Nombresubconcepto y estos campos son string.

Por la premura de tiempo , me toco hacer algo que supongo que no es la mejor solución y es que cree otro DataGridView para desplegar los datos despues de salvados para poder mostrarlos en pantalla donde las dos columnas que me reciben estos datos son Text y con esto resolví el problema. Asi que por ahora me toca jugar con dos DataGridView; una para insertar y otra para simplemente desplegar.

Si se te ocurre algo no dudes en avisarme.
muchas gracias.

Código: C#
  1.  
  2.  private void MostrarDatos()
  3.         {
  4.             List<AdminSaldoTR> lmostrarAdmin = new CarteraNG().listarFacturasAdmin(conexionOracle, tbcampoConsulta, consecutivo);
  5.  
  6.             foreach (AdminSaldoTR admintr in lmostrarAdmin)
  7.             {
  8.                 dgDespliegue.Rows.Add(admintr.Nolinea, admintr.Factura,admintr.Nombredivision,admintr.Nombresubconcepto, admintr.DocumentoReferencia, admintr.ValorAsignado);
  9.                 tbFechaCrea.Text = admintr.FechaCreacion.ToShortDateString();
  10.                 tbUsuCrea.Text = admintr.UsuarioCreacion;
  11.                 cmbEstado.Text = admintr.Estado;
  12.             }
  13.             dataGridView2.Enabled = false;
  14.         }
  15.  
  16.