2011-12-04 14 views
6

Estoy tratando de obtener datos de la base de datos de acuerdo con el elemento seleccionado en el ComboBox pero cuando intento acceder al elemento ComboBox seleccionado, me da "System.Data.DataRowView "Obteniendo System.Data.DataRowView mientras obtiene el valor de ComboBox

me hizo lo mismo con una simple consulta de selección en otra función y que funciona bien, pero no sé por qué no funciona en esta consulta [...?]:

_dataAdapter.SelectCommand.CommandText = "SELECT lt.Name FROM Leader as lt LEFT JOIN Material as mt ON lt.Student_id=mt.lead_id where lt.Name=" + "'" + cmbLeader.SelectedItem.ToString() + "'"; 

¿Alguien puede decirme cuál podría ser el problema?

Respuesta

14

SelectedItem es el objeto de datos que está vinculado a la fuente de datos ComboBox, que en este caso es DataRowView.

Debe convertir SelectedItem en DataRowView, luego recupere el valor apropiado de la misma.

Esto se puede hacer de la siguiente manera:

DataRowView oDataRowView = cmbLeader.SelectedItem as DataRowView; 
string sValue = ""; 

if (oDataRowView != null) { 
    sValue = oDataRowView.Row["YourFieldName"] as string; 
} 

entonces reemplazar (en su CommandText):

cmbLeader.SelectedItem.ToString() 

con:

sValue 

Esto va a manejar con gracia el caso en que DataRowView es nulo.

YourFieldName en el código anterior debe ser el nombre del campo en la fuente de datos que contiene el valor Nombre. Si ha establecido este nombre de campo en las propiedades DisplayMember o ValueMember del combobox, puede usar esta propiedad para ahorrar un poco de dolor en el camino cuando este campo cambie o cuando desee reutilizar este código en otro lugar:

sValue = oDataRowView.Row[cmbLeader.DisplayMember] as string; 

O bien, puede usar cmbLeader.SelectedValue.

+0

He intentado utilizar SelectedValue todavía me sale System.Data.DataRowView, ¿cómo puedo enviar contenido desde SelectedItem a DataRowView – jarus

+0

Gracias he encontrado la manera de echar a SelectedItem DataRowView cadena str = ((DataRowView) cmbLeader.SelectedItem) [ "Nombre"]. ToString(); – jarus

+0

@jarus: actualizó la respuesta con detalles sobre la conversión a DataRowView. –

1

Cuando se une a un ADO DataTable, realmente se vincula a un ADO DataView (que es una colección de DataRowViews). Esto significa que el SelectedItem siempre será un DataRowView.

Para obtener el DataRow asociado puede llamar

DataRow row = ((DataRowView)SelectedItem).Row 
0

Esto para DropDownList. Muchos Desarrolladores quieren obtener el valor del Miembro de Datos del menú desplegable debajo de la función que ayudará a obtener el valor de una manera fácil ... ¡si hay comentarios de Sugerencias a continuación!

public string RadDropDownSelectValue(RadDropDownList radDropDownList) 
    { 
     string str = ""; 
     foreach (RadListDataItem item in radDropDownList.SelectedItems) 
     { 
      DataRowView dv = (DataRowView)item.Value; 
      str = dv.Row[0].ToString(); 
     } 
     return str; 
    } 
Cuestiones relacionadas