2013-07-20 67 views
0

到asptable我有一個表,動態地在運行時使用此代碼創建了更新面板中:如何訪問運行

Table tblmain = new Table(); 
TableRow tblrow = new TableRow(); 
TableCell tblcell = new TableCell(); 
tblmain.Rows.Add(tblrow); 
myDiv.Controls.Add(tblmain); 

現在我想訪問該表。但是當我試圖通過這個代碼做這項工作:

Table tbl = (Table)myDiv.Controls[0]; 

我收到此錯誤:

Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.Table'.

爲什麼asptable轉換爲literalcontrol?

+0

還有什麼是'myDiv'?這聽起來像是'Controls'集合中的第一件事是'LiteralControl'而不是'Table'。在那裏放置一個調試斷點,並檢查'Controls'集合中的實際內容,以查看'Table'的位置。這個集合中的 – David

+0

有3個控件。但當我改變控制指數(控制[1]或[2]),所以我收到上述錯誤。 –

+0

集合中的三個控件是什麼?代碼運行時,那裏是否有一個「表格」? – David

回答

0

ID你的表,並使用FindControl得到這個表,而無需使用循環:

tblmain.ID = "tblMain"; 
tblmain.ClientID = "tblMain"; 
... 
Table tbl = (Table)myDiv.FindControl("tblMain"); 
+0

我測試這個,但我的問題沒有解決。只有當控制創建這個控制是可訪問的! –

+0

在哪個事件處理函數/函數中不可訪問?發佈該代碼以及_div's_生成的html,您可以使用View源在瀏覽器中獲得該HTML。將斷點放在'myDiv.Controls'處,看看你的div的Controls集合是什麼。 – Coder

+0

渲染完頁面後,例如,當點擊一個按鈕訪問tblMain時,這不起作用。但是你可以在按鈕中創建表的代碼,它可以正常工作。 –