单击按钮后在表格单元格中加载UserControls

本文关键字:加载 UserControls 单元格 表格 按钮 单击 | 更新日期: 2023-09-27 18:24:49

在我的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?

例如,如果我单击按钮1,则必须在第二个单元格中加载UserControl1。如果我单击按钮2,则必须卸载userControl1并加载userControl2,依此类推

提前谢谢。

Luigi

单击按钮后在表格单元格中加载UserControls

在这种情况下,不应该动态加载UserControl。切换所有控件的可见性当然更好。因此,将三个UserControls静态地添加到表单元格中,并使它们最初成为Visible="false"。然后在每个按钮的单击事件中相应地更改这些属性。

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

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

我真的很欣赏动态加载它的想法。

但你应该只在需要时加载它,并在完成后处理它,或者第二次点击按钮,处理它并删除控件,然后再次加载。。。否则,它将始终保留在您的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);