单击按钮后在表格单元格中加载用户控件

时间:2012-02-15 19:11:48

标签: c# asp.net user-controls

在我的aspx页面中有一个只有一行和两列的表,如:

<table runat="server" id="MainTable">
<tr>
<td>

<asp:Button runat="server" Text="Button 1" ID="btn1" OnClick="btn1_Click" />
<asp:Button runat="server" Text="Button 2" ID="btn2" OnClick="btn2_Click" />
<asp:Button runat="server" Text="Button 3" ID="btn3" OnClick="btn3_Click" />

</td>

<td>
<%-- place the user control here -->
</td>

</tr>

</table>

是否可以通过点击每个按钮在第二个单元格中加载UserControl?

例如,如果单击Button1,则必须在第二个单元格中加载UserControl1。 如果我单击Button2,userControl1必须被充电,并且必须加载userControl2,依此类推。

提前致谢。

路易

3 个答案:

答案 0 :(得分:0)

在这种情况下,您不应动态加载UserControl。切换所有控件的Visibility肯定更好。因此,静态地将三个UserControls添加到table-cell并最初将它们设为Visible="false"。然后在每个按钮的单击事件中相应地更改这些属性。

答案 1 :(得分:0)

向页面添加用户控件非常简单,您可以像对页面的任何其他控件一样加载它:

MyUserControl myControl = (MyUserControl) Page.LoadControl("MyUserControl.ascx");

Page.Controls.Add(myControl);

答案 2 :(得分:0)

我非常感谢能够即时加载它的想法。

但是你应该只在需要时加载它并在完成后再次处理它,或者在第二次点击按钮时将其丢弃,处理它并移除控制然后重新加载...否则它将一直保留在你的RAM中。 ..并且可能导致内存泄漏..

示例HTML

<asp:Table runat="server" ID="MainTable">
    <asp:TableRow>
         <asp:TableCell ID="cell1" runat="server">
             <asp:Button runat="server" Text="Button 1" ID="btn1" OnClick="btn1_Click" />
             <asp:Button runat="server" Text="Button 2" ID="btn2" OnClick="btn2_Click" />
             <asp:Button runat="server" Text="Button 3" ID="btn3" OnClick="btn3_Click" />
         </asp:TableCell>
         <asp:TableCell  ID="cell2" runat="server">
         </asp:TableCell>
    </asp:TableRow>
</asp:Table>

按钮点击

cell2.Controls.Add(Your User Control ID);

编辑 - 1

cell2.Controls.Clear();
cell2.Controls.Add(Your User Control ID);