C# 在asp.net中持久化多个选定项的列表框
我将列表框的搜索选择条件持久化到另一个名为AreasLb的页面上。可以选择多个区域,我只想将用户选择的列表框项目设置为。selected=true 我认为下面的代码应该可以工作,但它不能,因为列表框中没有被选中的项目C# 在asp.net中持久化多个选定项的列表框,c#,asp.net,listbox,C#,Asp.net,Listbox,我将列表框的搜索选择条件持久化到另一个名为AreasLb的页面上。可以选择多个区域,我只想将用户选择的列表框项目设置为。selected=true 我认为下面的代码应该可以工作,但它不能,因为列表框中没有被选中的项目 if (s == "Areas") { string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';'); int i
if (s == "Areas")
{
string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';');
int i = 0;
foreach (ListItem item in AreasLb.Items)
{
foreach (var s1 in area)
{
if (s1 == item.Value)
{
AreasLb.Items[i].Selected = true;
}
continue;
}
i = i + 1;
}
continue;
}
我对你基于索引的选择有点怀疑——不是说它错了,但我认为可能有更好的方法。我很想使用:
string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';');
foreach (ListItem item in AreasLb.Items)
{
foreach (var s1 in area)
{
if (s1 == item.Value)
{
item.Selected = true;
}
}
}
或者,您可以使用Items.FindByText
方法,而不是遍历列表项集,该方法可以删除一个foreach
,并可能给您带来一点性能提升:-):
我想我应该用我找到的最终答案来更新这个问题 我基本上是在接受别人编写的代码,整个节目都有多个Page.DataBind()
重新计算,母版页中只有1个,这似乎解决了问题。您知道您是否正在访问
区域Lb.Items[i]。Selected=true代码>行?完成这部分代码后,您是否可以检查AreasLb.Items
并查看数组中的正确项是否设置为true?我正在点击该行,它被选中并设置为true。我有一个好朋友!Page.IsPostback在加载中,因此在加载中不会出错。谢谢,我喜欢第二种解决方案。。但就这个问题而言,我认为每一个版本都应该有效,但没有一个有效。肯定是发生了其他事情导致它不起作用。不知道什么though@N00b您的代码在页面生命周期中出现在哪里?你能多发布一些你周围的代码吗?在检查我们是否发回后,PageLoad中有一个对上面代码的方法调用。该方法在回发时不会被命中。
ListItem foundItem = null;
string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';');
foreach (var s1 in area)
{
// Search for a ListItem with the text from the array
foundItem = AreasLb.Items.FindByText(s1);
if (foundItem == null)
{
// We didn't find a matching item
}
else
{
// We found a matching item so select it
foundItem.Selected = true;
}
foundItem = null;
}