Pregunta

Editar 1

Creo que mi problema se deriva de lo siguiente. La función que llena la parte del menú desplegable establece el miembro de visualización en el nombre del condado. Luego, cuando intento configurar SelectedText o EditValue, como se ha sugerido, esa función solo devuelve el CountyID que intenta hacer coincidir con algo en la lista desplegable DisplayMember. Lo necesito para que coincida con algo en la lista ValueMember.

Usando lo siguiente, lo hice funcionar, pero es un HACK y agradecería mucho encontrar una solución real.

lkuResidenceCounty.ItemIndex = Convert.ToInt32(row["ResidencyCountyID"].ToString());

Publicación original

Tengo un cuadro de búsqueda (DevExpress) en un formulario de miembro en el que relleno los valores posibles desde la base de datos con este código - >

        lkuResidenceCounty.Properties.DataSource = ConnectBLL.BLL.Person.CountyList();
        lkuResidenceCounty.Properties.PopulateColumns();
        lkuResidenceCounty.Properties.DisplayMember = "CountyName";
        lkuResidenceCounty.Properties.ValueMember = "CountyID";
        lkuResidenceCounty.Properties.Columns[0].Visible = false;
        lkuResidenceCounty.Properties.Columns[2].Visible = false;
        lkuResidenceCounty.Properties.Columns[3].Visible = false;

Esto funciona bien ya que el Nombre del Condado se muestra como se esperaba.

Sin embargo, cuando intento cargar el valor de un miembro existente para este campo utilizando el siguiente, que es parte de una función que toma una fila del conjunto de datos - >

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

Me sale una caja en blanco. He revisado el código y se está devolviendo el ID correcto para el miembro.

Lamentablemente, el procedimiento almacenado para completar las opciones desplegables de una Tabla de mantenimiento con las columnas " Nombre del condado " &erio; " ID del Condado " ;. Así que eso es correcto. Desafortunadamente, el procedimiento almacenado para cargar el condado actual de una persona específica extrae de la Tabla de Personas, donde hay una columna llamada " ResidencyCountyID " Se llama así porque también hay un " ResponsibilityCountyID " columna.

Necesito una forma para que ambos coexistan, ¿alguna solución?

¡Gracias!

Otros consejos

La propiedad ValueMember le dice a la lista de qué campo extraer cuando se configura la propiedad Value. Una vez que haya establecido el ValueMember en " CountyID " ;, luego, cuando la lista sea Databound, establecerá todas las propiedades de valor de los elementos de la lista para que respeten los campos de CountyID de sus objetos.

Por lo tanto, no debes hacer:

lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();

sino más bien

lkuResidenceCounty.Properties.ValueMember = "CountyID";

estuvo perfectamente bien, siempre y cuando hayas identificado correctamente el campo que estás tratando de vincular. Una vez que la lista esté en el archivo de base de datos, debería ver los resultados que está esperando.

Sin embargo, después de ver tu código, parece que no estás coincidiendo con tu campo. En un lugar está usando ResidencyCountyID y en otro está usando CountyID. Esa es muy probablemente su fuente de confusión. Averigua cuál es el nombre real del campo y asegúrate de establecer el ValueMember en eso.

ACTUALIZAR

Después de leer su comentario, lo que está buscando es la propiedad SelectedValue. La propiedad SelectedValue le dice a la lista que fuerce el valor seleccionado a cualquier entrada que le des.

Esencialmente tienes dos cosas sucediendo aquí. ValueMember le dice a la lista qué debe usar como valor de su fuente de datos, y SelectedValue, que le dice a la lista cuál debe ser el valor seleccionado actualmente.

¿Por qué es necesario que el mismo LookUpEdit tenga dos miembros de valor? ¿Se está utilizando de forma independiente o en una cuadrícula? Si es independiente, puede intercambiar los dos editores de repositorio en función de la fila actual. Pero, ¿hay más de 2 valores posibles para el ValueMember? Eso también complicaría las cosas.

ACTUALIZACIÓN

Mirando tu edición, creo que entiendo un poco más lo que está pasando. Entonces, ¿no desea cambiar su ValueMember (que se refiere a una columna de datos), sino cambiar el valor del editor? Si es así, entonces definitivamente deberías usar EditValue (no SelectedText, que no creo que deba configurarse), y asignarlo a la fila [" value_field "] así:

lkuResidenceCounty.EditValue = row["ResidencyCountyID"];

¿Qué sucede cuando haces eso?

scroll top