我有一个多选列表框,我绑定到DataTable.DataTable包含2列描述和值.
这是列表框填充代码:
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;
Run Code Online (Sandbox Code Playgroud)
我将描述设置为DisplayMember,将值设置为ListBox的ValueMember.现在,根据传递的值,我需要在ListBox中设置所选项.
这是我的代码:
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
Run Code Online (Sandbox Code Playgroud)
这是行不通的.因此,我不得不求助于下面的代码(我循环遍历列表框中的所有项目)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道我的代码中缺少/错误的内容.为什么lb.SelectedValue = valuePassedByUser; 选择错误的项目?