从GridView列中选择多个ListBox项

时间:2017-07-27 15:19:16

标签: c# asp.net gridview listbox

我有一个启用了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中,但列表框仍然不会合作。

关于如何解决这个问题的任何想法 - 或者我可以用什么其他代码来实现相同的结果?

谢谢!

1 个答案:

答案 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; - 该代码应该有效。