none
Asignar a un DisplayMember una columna de mi DataSet RRS feed

  • 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();


    martes, 27 de marzo de 2018 15:45

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.

    miércoles, 28 de marzo de 2018 7:41

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);

    martes, 27 de marzo de 2018 16:14
  • 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.

    miércoles, 28 de marzo de 2018 7:41
  • Si tiene C# 7 puede hacer:  cbb.DisplayMember = nameof(ds.dt.Texto);

    Jose R. MCP
    Code Samples

    miércoles, 28 de marzo de 2018 17:21
    Moderador