我有一个多选列表框,我绑定到一个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;
我设置的描述为将DisplayMember和值列表框的ValueMember。现在取决于通过什么值,我需要在列表框中设置选定的项目。
这里是我的代码:
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 2009-05-18 13:17:42
该列表框正在填充DataTable,DataTable又会从数据库中检索数据。我担心如果我在填充列表时设置了ValueMember,为什么是 lb.SelectedValue = valuePassedByUser; 不工作? – 2009-06-03 03:30:54