在运行时向表中添加行
问题描述:
在我们的一个页面上,我们得到了一个在运行时生成行的表。我想将这些行的内容移出到他们自己的控件中,并在运行时为其设置属性,以便将代码展示与代码隐藏分开。但这不是我期望的方式。在运行时向表中添加行
如果我有我的行状控制从用户控件继承,那么我可以这样做是为了在运行时创建的控制:
MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx");
然后,我想将它添加到我的表:
MyTable.Rows.Add(row);
但行不从System.Web.UI.HtmlControls.HtmlTableRow或System.Web.UI.WebControls.TableRow继承,所以你不能这样做。但是,如果我让控件继承其中一个,那么上面的LoadControl调用会抱怨控件不能从UserControl继承。
这里的快乐解决方案是什么?如果需要更多信息,请询问。
答
我想你找什么做的是:
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);
,你说是你的控制不能从多个基类继承,你不能直接添加控件到行收集的问题。你需要先包装它。可能有更清洁的解决方案,但是这个确实有效。