none
Obtener una cadena de la selección de un ComboBox RRS feed

  • Pregunta

  • Tengo un ComboBox en WPF que relleno mediante la ejecución de un procedimiento almacenado de SQL server, con los nombres de los autores de determinados artículos de prensa. Hasta ahí perfectamente. El problema viene cuando después de seleccionar un autor (Apellidos, Nombre) y solicitar que me descomponga la cadena mediante la función Split(',') me da error al no encontrar el segundo elemento del array.

    La explicación está en que intenta descomponer el siguiente resultado de la selección en el ComboBox: ComboBoxWPF_LINQ_01.usp_ListadoCompletoAutoresResult, siendo ComboBoxWPF_LINQ_01 el nombre de la Solución y usp_ListadoCompletoAutores el procedimiento almacenado que ejecuto para llenar el ComboBox.

    El código que utilizo es el siguiente:

    private void MostrarAutor()

    {string oAutor, oApellidos, oNombre;

    string [] CadenaSeparada;

    DataClasses1DataContext db = new DataClasses1DataContext();

    cboAutores.ItemSource = db.usp_ListadoCompletoAutores().ToList();

    oAutor = cboAutotes.Text.ToString;

    CadenaSeparada = oAutor.Split(',');

    textBox1.Text = CadenaSeparada[0];

    textBox2.Text = CadenaSeparada[1];

    }

    Tambien lo he probado con oAutor = cboAutores.SelectedItem.ToString() y tampoco me funciona

    Las cadenas las necesito para buscar en la base de datos los artículos escritos de cada autor, que figuren en ella.

    martes, 11 de septiembre de 2012 17:37

Todas las respuestas

  • la cadena oAutor tiene el separador coma (,) ?

    si no lo tiene es logico que no te busque el segundo bloque, nos comentas como te fue

    martes, 11 de septiembre de 2012 21:57
  • Por supuesto que tiene el separador coma. La cadena queda así: "Apellido1 Apellido2, Nombre"

    Gracias por tu interés.

    miércoles, 12 de septiembre de 2012 5:56
  • Hola:

    Aunque debería existir una coma y separarte (split) el nombre en 2 elementos, nunca está de más comprobarlo por si acaso, yo comprobaría:

    CadenaSeparada.Length > 1

    antes de hacer:

    textBox2.Text = CadenaSeparada[1];

    Saludos

    miércoles, 12 de septiembre de 2012 9:56
  • hola, podrias poner aqui el valor de oAutor?

    por que en si como haces el split es correcto,asi que pienso que la cadena esta mal postea el valor de la cadena oAutor compañero, saludos

    oAutor = cboAutotes.Text.ToString;

    en la parte de arriba con solo poner oAutor = cboAutores.Text; es suficiente, saludos

    miércoles, 12 de septiembre de 2012 13:13
  • Así tampoco me funciona, no se si es que explico mal el problema; voy a intentar hacerlo mejor:

    El comboBox se llena perfectamente con cadenas con la siguiente estructura

    Apellido1 Apellido2, Nombre

    Apellido1 Apellido2, Nombre

    Apellido1 Apellido2, Nombre

    ......................................

    Selecciono un Item, y en el texto del combo aparece la cadena seleccionada con la misma estructura, osea,

    Apellido1 Apellido2, Nombre, y es aquí donde comienzan los problemas, pues cuando hago oAutor = cboAutotes.Text.ToString; ó oAutor = cboAutotes;

    me devuelve "ComboBoxWPF_LINQ_01.usp_ListadoCompletoAutoresResult", en lugar de devolverme la cadena "Apellido1 Apellido2, Nombre", nada parecido con la realidad.

    Se me entiende ahora. Muchisimas gracias por el interés prestado a mi problema.

    miércoles, 12 de septiembre de 2012 14:34
  • Prueba con esto 

    ComboBoxItem comboItem = (ComboBoxItem)comboBox1.SelectedItem;
    string strSelect = comboItem.Content.ToString();

    textBox1.Text = strSelect;

    ya teniendo strSelect realizas el split

    Saludos.

    miércoles, 12 de septiembre de 2012 18:49
  • Me da el siguiente error:

    No se puede convertir un objeto de tipo 'ComboBoxWPF_LINQ_01.usp_ListadoCompletoAutoresResult' al tipo 'System.Windows.Controls.ComboBoxItem'.

    Muchas gracias por tu interés.

    miércoles, 12 de septiembre de 2012 19:32
  • Ok va de nuevo, debes indicar el campo (autor) de la consulta qe haces en el sp e indicarlo en SelectedValuePath o DisplayMemberPath con los 2 funciona, es como un dropdowlist en webform hay que indicar dataValue y dataText, para Wpf es la siguiente forma, con esto ya puedes utilizar combo.text.tostring(), o SelectedValue o SelectedValuepath.

    comboBox1.DisplayMemberPath = "nombreautor";
    comboBox1.SelectedValuePath = "nombreautor";

    Saludos.

    miércoles, 12 de septiembre de 2012 22:24
  • He tardado en responder, pués he estado dandole vueltas y sigue sin funcionar.

    La cuestión es fácil de entender:

    Seleccionar una opción en en ComboBox y que esta opción seleccionada aparezca en TextBox, osea:

    TextBox.Text = ComboBox.SelectedItem

    Y a mí me da TextBox.Text =  usp_ListadoCompletoAutoresResult

    Como ves, como pasa en las películas, cualquier parecdido con la realidad es pura coincidencia.

    Gracias por tu interés.

    domingo, 23 de septiembre de 2012 9:59
  • ok, entonces estan mal los parametros que esta recibiendo (o son nulos) y si pruebas

    textbox1.text = combobox1.text;

    lunes, 24 de septiembre de 2012 16:58
  • Pues tampoco funciona. Sigue dando el mismo resultado, o sea :  usp_ListadoCompletoAutoresResult

    Gracias.

    martes, 25 de septiembre de 2012 15:31