【发布时间】:2023-03-29 16:37:01
【问题描述】:
我有一个绑定到 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;
我将 description 设置为 DisplayMember,将 value 设置为 ListBox 的 ValueMember。现在根据传递的值,我需要在 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;选择不正确的项目?
【问题讨论】:
-
您能否提供更多关于您究竟需要做什么的信息或更完整的代码示例?该对象是否从数据库中读取字段并将所选索引/值设置为列表框中的匹配值?
-
列表框正在填充一个 DataTable,该 DataTable 又从数据库中检索到数据。我担心的是如果我在填充列表时设置了 ValueMember,为什么是 lb.SelectedValue = valuePassedByUser;不工作?
标签: c# listbox asp.net-2.0