2017-07-27 109 views
1

我有一个启用了Multiselect的数据绑定列表框。在页面加载,我从一个GridView塔进料的信息,并选择所有符合的选项,使用此代码:从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

SelectedIndex属性一次只允许一个值,所以每次迭代都会重置它。这就是为什么只有最后一个被选中。您需要从ListItem本身访问“Selected”属性。

没有尝试它自己,它应该是这个样子:

foreach (var dept in splitDepartments) 
{ 
    int index = listDepartment.Items.IndexOf(listDepartment.Items.FindByText(dept));   
    listDepartment.Items[index].Selected = true; 
} 

只要你有的SelectionMode =“多” - 即代码应工作。

+0

是的,你明白了!我认为这是类似的事情,但无法指出故障的确切点......谢谢! –