2010-07-30 36 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