在我的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,依此类推。
提前致谢。
路易
答案 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);