如何替换整个ASP控件

时间:2015-03-18 11:48:11

标签: c# asp.net

我想在Table控件中显示大量数据,但是将代码放在一个返回new Table对象的库方法中。当我将该对象直接分配给ASP页面上的控件时,数据不会显示。

库方法如下所示:

public Table CreateTable(...)
{
   Table tbl = new Table();
   ...
   // adding lots of cells and setting lots of properties
   ...
   return tbl;
}

ASP页面有一个Table控件:

<asp:Content ID= ... >
    <asp:Table ID="Table_Data" runat="server">
    </asp:Table>
</asp:Content>

在Table-Behind Table控件中分配了新的Table对象:

protected void Button_Click(object sender, EventArgs e)
{
    Table_Data = Lib.CreateTable(...);
}    

但是在测试时,Table控件显示为空。

这个原则是有效的:

Table NewTable = Lib.CreateTable(...);
PlaceHolder1.Controls.Add(NewTable);

但似乎不需要在我的asp页面中安装PlaceHolder。 或者是吗?

感谢任何帮助!


更新

作为接受的答案,解决方案是保留PlaceHolder,但不是<asp:Content>,而是将新的PlaceHolder控件放在我想要表格的确切位置:

<asp:PlaceHolder ID="PlaceHolder_Table" runat="server">
</asp:PlaceHolder>

并在Code Behind中:

PlaceHolder_Table.Controls.Add(Lib.CreateTable(...));

简单,效果很好。

2 个答案:

答案 0 :(得分:2)

<asp:Content ID="contId" >
    <asp:Table ID="Table_Data" runat="server">
    </asp:Table>
</asp:Content>

protected void Button_Click(object sender, EventArgs e)
{
    contId.Controls.Clear();
    contId.Controls.Add(Lib.CreateTable(...));
} 

答案 1 :(得分:-1)

asp.net表控件不应该像这样工作。您最有可能在寻找GridView控件see here。这用于获取数据,将其绑定到Gridview并显示它

asp.net表控件信息为here。它更像是一种格式化的东西,而不是用于大量的数据,这就是为什么你无法对它进行数据绑定。