2009-04-30 159 views
1

在我們的一個頁面上,我們得到了一個在運行時生成行的表。我想將這些行的內容移出到他們自己的控件中,並在運行時爲其設置屬性,以便將代碼展示與代碼隱藏分開。但這不是我期望的方式。在運行時向表中添加行

如果我有我的行狀控制從用戶控件繼承,那麼我可以這樣做是爲了在運行時創建的控制:

MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx"); 

然後,我想將它添加到我的表:

MyTable.Rows.Add(row); 

但行不從System.Web.UI.HtmlControls.HtmlTableRow或System.Web.UI.WebControls.TableRow繼承,所以你不能這樣做。但是,如果我讓控件繼承其中一個,那麼上面的LoadControl調用會抱怨控件不能從UserControl繼承。

這裏的快樂解決方案是什麼?如果需要更多信息,請詢問。

回答

4

我想你找什麼做的是:

MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx"); 
    TableCell newCell = new TableCell(); 
    newCell.Controls.Add(row); 
    TableRow newRow = new TableRow(); 
    newRow.Cells.Add(newCell); 
    MyTable.Rows.Add(newRow); 

,你說是你的控制不能從多個基類繼承,你不能直接添加控件到行收集的問題。你需要先包裝它。可能有更清潔的解決方案,但是這個確實有效。