Tengo un cuadro de lista de selección múltiple que estoy vinculando a un DataTable. DataTable contiene 2 columnas descripción y valor.Configuración del elemento seleccionado en un ListBox sin bucle
Aquí está el código poblar cuadro de lista:
DataTable copytable = null;
copytable = GlobalTable.Copy(); // GlobalTable is a DataTable
copytable.Rows[0][0] = "--ALL--";
copytable.Rows[0][1] = "--ALL--";
breakTypeList.DataSource = copytable;
this.breakTypeList.DisplayMember = copytable.Columns[0].ColumnName; // description
this.breakTypeList.ValueMember = copytable.Columns[1].ColumnName; // value
this.breakTypeList.SelectedIndex = -1;
me he fijado designación que el DisplayMember y valor que el ValueMember del ListBox. Ahora, dependiendo de lo que se pase el valor, necesito configurar el elemento seleccionado en el ListBox.
Aquí está mi código:
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
que no está funcionando. Por lo tanto tengo que recurrir al código de abajo (donde bucle a través de todos los elementos del cuadro de lista)
for (int i = 0; i < lb.Items.Count; i++)
{
DataRowView dr = lb.Items[i] as DataRowView;
if (dr["value"].ToString() == valuePassedByUser)
{
lb.SelectedIndices.Add(i);
break;
}
}
Me gustaría saber lo que falta/errónea en mi código. ¿Por qué es lb.SelectedValue = valuePassedByUser; seleccionando elementos incorrectos?
¿Puede darnos más información sobre qué es exactamente lo que necesita hacer o un ejemplo más completo del código? ¿El objeto es leer un campo de una base de datos y establecer el índice/valor seleccionado en un valor coincidente en el cuadro de lista? – ryanulit
El cuadro de lista se está completando con una DataTable que a su vez tiene datos recuperados de la base de datos. Mi preocupación es si he configurado el ValueMember mientras se completa la lista, ¿por qué lb.SelectedValue = valuePassedByUser; no funciona? –