Principales respuestas
Asignar a un DisplayMember una columna de mi DataSet

Pregunta
-
Buenos días.
Tengo el comboBox "cbb" un dataSet "ds" que tiene dentro un dataTable "dt" y este tiene dos columnas: Objeto y Texto
Quiero visionar el contenido de la columna texto, para ello se que puedo hacerlo así:
cbb.DisplayMember = "Texto";
Me gustaría seleccionarlo, así si la columna se renombrase con una refactorización lo tendría resuelto.
cbb.DisplayMember = ds.dt.Columns.Select(X => X.Objeto).ToString();
Respuestas
-
No me he expresado bien. Tengo dos columnas. Texto y Objeto.
Quiero cargar el contenido de la columna Texto en el COMBOBOX para que se lea al desplegar de normal lo llevo haciendo así:
cbb.DisplayMember = "Texto";
El problema es que si refactorizo al estar especificado la columna en un String no me realiza la refactorización.
Por tanto estoy buscando la manera de obtener el mismo resultado, pero obtenido, los nombres de los Header como si fuera un Enum, algo así.
cbb.DisplayMember = ds.dt.Texto;
No cadenas para eso ya tengo la primera forma.
Referente a las posibles maneras que me has especificado
1º "Objeto esta dentro de una cadena por tanto no me sirve
cbb.DisplayMember = ds.dt.Select("Objeto ="+txtObjeto.Text+" AND Texto = "+txtTexto.text).ToString();
2º No sirve me devuelve el contenido de la columna no el nombre de la columna.
3º Le ocurre lo mismo que el 1º y es que esta especificado en una Cadena.
- Propuesto como respuesta Tonatiuh AbregoModerator miércoles, 28 de marzo de 2018 16:37
- Votado como útil webJoseModerator miércoles, 28 de marzo de 2018 17:21
- Marcado como respuesta Pablo RubioModerator domingo, 1 de abril de 2018 0:07
Todas las respuestas
-
hola
creo que para hacer un select de tu datatable como muestras seria:
cbb.DisplayMember = ds.dt.Select("Objeto ="+txtObjeto.Text+" AND Texto = "+txtTexto.text).ToString();
(recuerda que el select puede arrojar un data row!!) ver
para que uses como linq tienes que convertir dt en enumerable
var resultado = ds.dt.AsEnumerable().Select(x=> x...
o en otro caso
var resultados = dt.Rows.Cast<DataRow>().FirstOrDefault(x => x.Field<string>("Objeto") == txtObjeto.text);
- Propuesto como respuesta Tonatiuh AbregoModerator martes, 27 de marzo de 2018 17:08
- Votado como útil El dubitativo miércoles, 28 de marzo de 2018 7:42
-
No me he expresado bien. Tengo dos columnas. Texto y Objeto.
Quiero cargar el contenido de la columna Texto en el COMBOBOX para que se lea al desplegar de normal lo llevo haciendo así:
cbb.DisplayMember = "Texto";
El problema es que si refactorizo al estar especificado la columna en un String no me realiza la refactorización.
Por tanto estoy buscando la manera de obtener el mismo resultado, pero obtenido, los nombres de los Header como si fuera un Enum, algo así.
cbb.DisplayMember = ds.dt.Texto;
No cadenas para eso ya tengo la primera forma.
Referente a las posibles maneras que me has especificado
1º "Objeto esta dentro de una cadena por tanto no me sirve
cbb.DisplayMember = ds.dt.Select("Objeto ="+txtObjeto.Text+" AND Texto = "+txtTexto.text).ToString();
2º No sirve me devuelve el contenido de la columna no el nombre de la columna.
3º Le ocurre lo mismo que el 1º y es que esta especificado en una Cadena.
- Propuesto como respuesta Tonatiuh AbregoModerator miércoles, 28 de marzo de 2018 16:37
- Votado como útil webJoseModerator miércoles, 28 de marzo de 2018 17:21
- Marcado como respuesta Pablo RubioModerator domingo, 1 de abril de 2018 0:07
-
Si tiene C# 7 puede hacer: cbb.DisplayMember = nameof(ds.dt.Texto);
Jose R. MCP
Code Samples- Propuesto como respuesta Tonatiuh AbregoModerator viernes, 30 de marzo de 2018 18:02