Ho una casella di selezione a selezione multipla che sto vincolando a un DataTable. DataTable contiene 2 colonne descrizione e valore.Impostazione dell'elemento selezionato in un ListBox senza loop
Ecco il codice popolando casella di riepilogo:
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;
io pongo descrizione come il DisplayMember e valore come il ValueMember del ListBox. Ora, a seconda di cosa viene passato il valore, devo impostare l'elemento selezionato nel ListBox.
Ecco il mio codice:
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
che non sta funzionando. Quindi devo ricorrere al codice qui sotto (dove ho scorrere tutti gli elementi nella casella di riepilogo)
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;
}
}
vorrei sapere cosa manca/errato nel mio codice. Perché lb.SelectedValue = valuePassedByUser; selezionando articoli errati?
Puoi fornire ulteriori informazioni su cosa è esattamente necessario o un esempio più completo del codice? L'oggetto legge un campo da un database e imposta l'indice/il valore selezionato su un valore corrispondente nella casella di riepilogo? – ryanulit
La casella di riepilogo viene popolata con un DataTable che a sua volta ha i dati recuperati dal database. La mia preoccupazione è che se ho impostato ValueMember mentre compilavo la lista, perché è lb.SelectedValue = valuePassedByUser; non funziona? –