2012-09-11 26 views
-1

我正試圖在動態HTML表格中查找動態控件。我有以下內容:在動態HTML表格中查找動態控件

System.Web.UI.HtmlControls.HtmlTableRow TR = null; 
System.Web.UI.HtmlControls.HtmlTableCell TD1 = null; 
System.Web.UI.HtmlControls.HtmlTableCell TD2 = null; 
System.Web.UI.HtmlControls.HtmlTableCell TD3 = null; 
System.Web.UI.HtmlControls.HtmlTableCell TD4 = null; 
System.Web.UI.HtmlControls.HtmlTableCell TD5 = null; 
System.Web.UI.HtmlControls.HtmlTableCell TD6 = null; 

// Database stuff 
int i = 1; 
while (objRdr.Read()) 
{ 
    TR = new System.Web.UI.HtmlControls.HtmlTableRow(); 
    TD1 = new System.Web.UI.HtmlControls.HtmlTableCell(); 
    TD2 = new System.Web.UI.HtmlControls.HtmlTableCell(); 
    TD3 = new System.Web.UI.HtmlControls.HtmlTableCell(); 
    TD4 = new System.Web.UI.HtmlControls.HtmlTableCell(); 
    TD5 = new System.Web.UI.HtmlControls.HtmlTableCell(); 
    TD6 = new System.Web.UI.HtmlControls.HtmlTableCell(); 

    // ASP code maybe wrong, but its to give you the ID. 
    TD1.InnerHtml = "<asp:RadioButton runat='server' ID='radApprove"+i.ToString()+"' Value='Approve' />"; 
    TD2.InnerText = HttpUtility.HtmlEncode(objRdr[1].ToString()); 
    TD3.InnerText = HttpUtility.HtmlEncode(objRdr[6].ToString()); 
    TD4.InnerText = HttpUtility.HtmlEncode(objRdr[2].ToString()); 
    TD5.InnerText = HttpUtility.HtmlEncode(objRdr[10].ToString()); 
    TD6.InnerText = HttpUtility.HtmlEncode(objRdr[8].ToString()); 

    TR.Cells.Add(TD1); 
    TR.Cells.Add(TD2); 
    TR.Cells.Add(TD3); 
    TR.Cells.Add(TD4); 
    TR.Cells.Add(TD5); 
    TR.Cells.Add(TD6); 

    tblOrderItems.Rows.Add(TR); 
    TR = null; 
    TD1 = null; 
    TD2 = null; 
    TD3 = null; 
    TD4 = null; 
    TD5 = null; 
    TD6 = null; 
    i++; 
} 

現在,當我嘗試從單元中獲取數據時,它失敗。我曾嘗試過:

this.FindControl("radApprove1"); 

但是這會返回一個null。我也嘗試迭代表中的行,但它只表示1行,這是標題。該代碼從Page_Load中調用,所以我認爲我可以獲得這些控件。在呈現頁面後查看頁面的HTML源代碼時,我可以看到它們已被正確渲染。有任何想法嗎?

+0

你介意爲radApprove渲染什麼? – maxisam

+0

我是否介意?不適用於您:oS –

+0

是否有任何理由不想使用「友好的數據綁定」控件,例如中繼器或數據網格?我已經與我自己的桌子控制我的戰鬥,感覺就像我總是鬆動: -/ – Patrick

回答

0

this.FindControl(「radApprove1」);只會檢查您的控件的主INamingContainer。 你需要遞歸找到它或做:

僞:

foreach row in a table.Rows 
    foreach cell in row 
    cell.FindControl() 
+0

正如我的問題所述,我已經嘗試過這一點,表格說它有1行是列標題。 –