2015-04-20 37 views
0

我有一個ListView和它檢索在它3項,那麼我有這樣的代碼,當數據被檢索並投入ListView控件列表視圖只獲得1項

protected void car_listview_DataBound(object sender, EventArgs e) 
{ 
     var lbl = car_listview.Items[0].FindControl("lbl1") as Label; 
     lbl.Text = "Car"; 
} 

但是我收到的問題是,它只改變第一個項目的lbl而不是第二個和第三個。

我不能使用Eval,因爲我打算做IF語句來顯示lbl.Text屬性中的不同值,所以他們是一種解決方法?

回答

1

ListView.DataBound當整個控件完成綁定數據到控件時事件觸發。所以它每ListView只發射一次。如果要更改每個項目上的Label,請遍歷ListView.Items集合並更改其中的值,或使用每個數據項觸發的事件ListView.ItemDataBound。您可以通過事件處理程序中的參數訪問插入的項目。

- 編輯 -
的處理程序中發現標籤的代碼,嘗試這樣的事情:

protected void car_listview_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     Label _label = (Label)e.Item.FindControl("lbl"); 
     if (_label != null) 
     { 
      //code here 
     } 
    } 
} 
+0

謝謝!我將使用ItemDataBound,因此如果我在ItemTemplate中有一個名爲lbl的標籤,我將如何通過參數訪問它? – c0mrade

+0

完美答案! – c0mrade

+0

很高興我能幫到你。 – Sami