2010-07-30 34 views
1

我的列表框正在从sql数据库中获取它的项目,我试图通过它循环并根据一定的条件执行操作。我以前做过这个,但不是当它连接到数据库时。这是我使用的代码(即不工作):迭代通过数据绑定列表框

foreach (object o in arrList) 
{ 
    foreach (ListItem i in lstInstructors.Items) 
    { 
     if (i.Text == o.ToString()) 
     i.Selected = true; 
    } 
} 

虽然我调试即时得到null作为ListItem i,我猜那是因为没有静态项添加,所以会是什么请拨打电话以获取数据绑定项目,而不是使用lstInstructors.Items

+0

你在做什么? – Oded 2010-07-30 21:06:55

+0

它自己的函数的一部分被从Page_Load – 2010-07-30 21:09:25

+0

调用,将它移动到'ItemDataBound'事件处理程序。 – Oded 2010-07-30 21:12:16

回答

1

确保您在DataBound事件这样做:

protected void lstInstructors_DataBound(object sender, EventArgs e) 
{ 
    foreach (object o in arrList) 
    { 
     foreach (ListItem i in lstInstructors.Items) 
     { 
      if (i.Text == o.ToString()) 
       i.Selected = true; 
     } 
    } 
} 

这将确保需要绑定任何项目其实都是方法运行时绑定。

+0

太棒了。有效!谢谢一堆!这很糟糕,我不得不等待7分钟,只是为了标记你的回答正确,尽管 – 2010-07-30 21:13:49

+0

@mobile还有一件事:如果你确定只会有一场比赛,在'i.Selected = true'之后放一个'break'; '那样,一旦找到了匹配,它就不会比较剩下的项目。 – 2010-07-30 21:17:34

+0

oops。我实际上也使用过类似的方法。不知怎的,它跳过这一个。谢谢 – 2010-07-30 21:22:36