У меня есть список из нескольких элементов, который я привязываю к DataTable. DataTable содержит 2 описания и значения столбцов.Настройка выбранного элемента в ListBox без цикла
Вот ListBox заселение код:
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;
Я устанавливаю описание как DisplayMember и значение как ValueMember в ListBox. Теперь, в зависимости от того, какое значение передано, мне нужно установить выбранный элемент в ListBox.
Вот мой код:
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
, который не работает. Поэтому я должен прибегнуть к коду ниже (где я перебрать все элементы в списке)
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;
}
}
Я хотел бы знать, что отсутствует/ошибочный в моем коде. Почему lb.SelectedValue = valuePassedByUser; выбор неправильных элементов?
Можете ли вы дать дополнительную информацию о том, что именно вам нужно сделать или более полный пример кода? Является ли объект считывать поле из базы данных и устанавливать выбранный индекс/значение в соответствующее значение в списке? – ryanulit
В поле списка заполняется DataTable, который, в свою очередь, имеет данные, полученные из базы данных. Я беспокоюсь, если я установил ValueMember при заполнении списка, почему это lb.SelectedValue = valuePassedByUser; не работает? –