我有一个启用了Multiselect的数据绑定列表框。在页面加载时,我从GridView列提供信息,并使用以下代码选择所有匹配的选项:
string[] separators = { "<br />" };
String Departments = Session["ProjDept"].ToString();
string[] splitDepartments = Departments.Split(separators, StringSplitOptions.RemoveEmptyEntries);
foreach (var dept in splitDepartments)
{
listDepartment.SelectedIndex = listDepartment.Items.IndexOf(listDepartment.Items.FindByText(dept));
}
但是,我遇到了一个奇怪的问题:当GridView列中只有一个部门时,列表框中的选项会被正确选中,但是当有多个部门时,只会选择最后一个部门。
我在我的foreach中运行了System.Diagnostics.Debug.Print(dept),以确保所有值都已通过,并且它们都出现在STDOUT中,但列表框仍然不会合作。
关于如何解决这个问题的任何想法 - 或者我可以用什么其他代码来实现相同的结果?
谢谢!
答案 0 :(得分:0)
SelectedIndex属性一次只允许一个值,因此您需要在每次迭代时重置它。这就是为什么只选择最后一个。您需要访问&#34;已选择&#34; ListItem本身的属性。
如果不自己尝试,它应该看起来像:
foreach (var dept in splitDepartments)
{
int index = listDepartment.Items.IndexOf(listDepartment.Items.FindByText(dept));
listDepartment.Items[index].Selected = true;
}
只要你有SelectionMode =&#34;多个&#34; - 该代码应该有效。