2009-04-30 106 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); 

,你说是你的控制不能从多个基类继承,你不能直接添加控件到行收集的问题。你需要先包装它。可能有更清洁的解决方案,但是这个确实有效。