Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何替换整个ASP控件_C#_Asp.net - Fatal编程技术网

C# 如何替换整个ASP控件

C# 如何替换整个ASP控件,c#,asp.net,C#,Asp.net,我想在表控件中显示大量数据,但将代码放在一个库方法中,该库方法返回一个新表对象。当我将该对象直接指定给ASP页上的控件时,数据不会显示 库方法如下所示: public Table CreateTable(...) { Table tbl = new Table(); ... // adding lots of cells and setting lots of properties ... return tbl; } ASP页面有一个表控件: <asp:Co

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

库方法如下所示:

public Table CreateTable(...)
{
   Table tbl = new Table();
   ...
   // adding lots of cells and setting lots of properties
   ...
   return tbl;
}
ASP页面有一个
控件:

<asp:Content ID= ... >
    <asp:Table ID="Table_Data" runat="server">
    </asp:Table>
</asp:Content>
但测试时,表控件显示为空

这一原则通过以下方式发挥作用:

Table NewTable = Lib.CreateTable(...);
PlaceHolder1.Controls.Add(NewTable);
但在我的asp页面中似乎不需要占位符。 还是这样

感谢您的帮助


更新:

作为公认的答案,解决方案是保留占位符,但不是
,而是在我想要表格的确切位置保留一个新的占位符控件:

<asp:PlaceHolder ID="PlaceHolder_Table" runat="server">
</asp:PlaceHolder>
简单,效果很好。


<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(...));
} 
受保护的无效按钮\u单击(对象发送者,事件参数e) { contId.Controls.Clear(); contId.Controls.Add(Lib.CreateTable(…); }
asp.net表格控件不应该这样工作。您很可能正在查找GridView控件。它用于获取数据、将数据绑定到Gridview并显示数据


asp.net表格控件信息为。它更多的是一种格式,而不是用于加载数据,这就是为什么您不能将数据绑定到它。

我们无法调试它,您需要这样做。
Lib.CreateTable()
确实返回了有用的东西吗?Lib方法工作得很好。但我想直接替换控件并不是那么明显。我读了一些关于
Render
调用的文章,但那是关于整个页面的。我只是在某个地方读到,我可以在页面上的任何位置添加占位符,所以这是一个很棒的解决方案!比我担心的要简单。哦,天哪,我(不)多么喜欢这些可以运行服务器代码的代码片段。。。
PlaceHolder_Table.Controls.Add(Lib.CreateTable(...));
<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(...));
}