DataTableにバインドする複数選択のリストボックスがあります。 DataTableには、2つの列の説明と値が含まれます。私は、リストボックスのValueMemberでとしてDisplayMemberとして記述し、値を設定していますループなしで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;
:
は、ここでは、コードを移入リストボックスです。値が渡されたかどうかに応じて、ListBoxで選択した項目を設定する必要があります。動作していない
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
:
は、ここに私のコードです。したがって、私は自分のコード内のエラー/欠けているものを知っていただきたいと思い下記のコード(リストボックス内のすべての項目を通じてどこIループ)
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ですか?間違った商品を選ん私はあなたが複数の項目を選択することができます唯一の方法は、foreachループを使用していると思う
var listBox = c as ListBox;
var item = listBox.Items.FindByValue(fieldValue);
if (item != null)
listBox.SelectedValue = fieldValue;
正確に何をする必要があるのか、コードのより完全な例についてさらに情報を与えることができますか?オブジェクトがデータベースからフィールドを読み取り、選択したインデックス/値をリストボックス内の一致する値に設定するかどうかを確認します。 – ryanulit
リストボックスには、データベースからデータを取得するDataTableが設定されています。私の懸念は、リストに値を設定しているときにValueMemberを設定した場合、なぜですか? lb.SelectedValue = valuePassedByUser; は機能しませんか? –