C sharp - Error 'unable to cast DataRowView to iConvertible'

 
Vista:
Imágen de perfil de Franklin

Error 'unable to cast DataRowView to iConvertible'

Publicado por Franklin (2 intervenciones) el 29/09/2021 02:03:19
Captura

Hola
Estoy programando en capas y tengo este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public DataTable Mostrar(DEquipos pEquipos)
        {
            DataTable TablaDatos = new DataTable("Equipos");
            using (OleDbConnection OleDbConexion = new OleDbConnection())
 
                try
                {
                    OleDbConexion.ConnectionString = DConexion.DatosBD;
                    OleDbConexion.Open();
 
                    OleDbCommand OleDbComando = new OleDbCommand
                    {
                        Connection = OleDbConexion,
                        CommandText = @"SELECT E.IDEquipo, E.IDCategoria, C.Categoria, E.Equipo, E.Logo
                                        FROM Equipos E
                                        INNER JOIN Categorias C ON E.IDCategoria = C.IDCategoria
                                        WHERE E.IDCategoria = @IDCategoria
                                        ORDER BY C.IDCategoria, E.Equipo"
                    };
 
                    OleDbParameter PIDCategoria = new OleDbParameter
                    {
                        ParameterName = "@IDCategoria",
                        OleDbType = OleDbType.Integer,
                        Value = pEquipos.IDCategoria
                    };
                    OleDbComando.Parameters.Add(PIDCategoria);
 
                    OleDbComando.ExecuteNonQuery();
                    OleDbDataAdapter OleDbAdaptadorDatos = new OleDbDataAdapter(OleDbComando);
                    OleDbAdaptadorDatos.Fill(TablaDatos);
                }
 
                catch (Exception ex)
                {
                    TablaDatos = null;
                    throw new Exception("Error al intentar ejecutar la instrucción. " + ex.Message, ex);
                }
 
                finally
                {
                    OleDbConexion.Close();
                }
 
            return TablaDatos;
        }

En un formulario, para llenar un DataGrid lo llamo así:
1
GridEquipos.DataSource = NEquipos.Mostrar(Convert.ToInt32(IDCategoria.SelectedValue));
y funciona

Para llenar un combobox lo hago así:
1
2
3
4
CboEquipo1.DataSource = NEquipos.Mostrar(Convert.ToInt32(IDCategoria.SelectedValue));
CboEquipo1.ValueMember = "IDEquipo";
CboEquipo1.DisplayMember = "Equipo";
CboEquipo1.SelectedIndex = -1;
antes de llenar el combobox me sale el error de la imagen (unable to cast...), luego de cerrar el mensaje funciona, carga los datos en el combobox

Me podrían ayudar a solucionar el error por favor, no sé que estoy haciendo mal, no tengo mucha experiencia en C#.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Roy
Val: 44
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Error 'unable to cast DataRowView to iConvertible'

Publicado por Roy (23 intervenciones) el 30/09/2021 19:26:43
Cuando enlazas un control a un DataSource debes invocar la funcion DataBind del control para completar el enlace. Y asignar las propiedades ValueMember y DisplayMember antes de asignar el DataSource:
1
2
3
4
5
CboEquipo1.ValueMember = "IDEquipo";
CboEquipo1.DisplayMember = "Equipo";
CboEquipo1.DataSource = NEquipos.Mostrar(Convert.ToInt32(IDCategoria.SelectedValue));
CboEquipo1.DataBind();
CboEquipo1.SelectedIndex = -1;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Franklin

Error 'unable to cast DataRowView to iConvertible'

Publicado por Franklin (2 intervenciones) el 01/10/2021 17:55:33
Muchas gracias.
La solución estaba en cambiar el orden, primero ValueMember, luego, DisplayMember y finalmente DataSource.

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar