2012-06-04 83 views
0

我在「表格單元格」中插入了一個標籤(稱爲Label1),該表格單元又被插入到數據列表中。Label.property reference

爲什麼在這種情況下,我不能使用,例如,Label1.Text Page_Load方法裏面,但是我將標籤插入 DataList控件,以Label1的任何參考完美的作品?

是否有解決這個問題的方法,因爲我需要表格單元格中的標籤,並且還可以從代碼隱藏文件中修改其標題(.Text屬性),我計劃將其分配給存儲過程的值。 你好,非常感謝你提前。

回答

1

如果一個控件位於數據列表中,那麼它將在列表中的每個項目中重複。因此,在數據專員之外引用控件是沒有意義的,因爲ASP.NET不知道要引用哪個實例 - 並且如果沒有數據,甚至不會有任何實例!

您可以訪問給定的數據列表中的項目的標籤,但是:

DataListItem item = dataList.Items[0]; // or whichever item you want 
Label label1 = (Label)item.FindControl("Label1"); 
+0

謝謝你,ekolis!我怎麼知道它是項目[0]還是項目[1]。等等?我可以通過視覺/圖形的方式看到每個datalist組件及其相關的排名,可以這麼說嗎?也許在設計視圖中?不幸的是在設計視圖中,我什麼都看不到。這是一箇舊的情況,它**不影響網站的功能,但我不能在視覺上處理控件,除了在創建時,不久之後它們消失。我不知道有什麼辦法可以恢復它們,我一直對此感興趣。 –

+0

在設計視圖中,您應該可以通過右鍵上下文菜單中的選項進入模板模式。這會讓你看到控件,並且可以直觀地添加更多的控件(所以你不必在代碼中完成)。 – ekolis

+1

至於項目[0]與項目[1],完全取決於綁定到數據專家的數據。項目[0]將是表示第一個綁定數據項目的項目,而項目[1]將是第二個項目等。 – ekolis

2

Label控制爲DataList具有創建,它的ID是由每一個容器,它裏面前綴(因此它不再稱爲Label1) - 您需要處理OnItemCreatedOnItemDataBound事件,然後查找並將其轉換爲Label Label1 = (Label)e.Item.FindControl("Label1"),然後才能訪問它。

+0

很好的回答,pOcHa,謝謝,我一定會試試這個!對於相同的任務,瞭解幾種方法是很好的。 –