Загрузка UserControls в ячейку таблицы после нажатия кнопки - PullRequest
0 голосов
/ 15 февраля 2012

имея на моей странице aspx таблицу только с одной строкой и 2 столбцами, например:

<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 и т. Д.

Спасибо заранее.

Luigi

Ответы [ 3 ]

0 голосов
/ 15 февраля 2012

добавить элемент управления на страницу очень просто, вы загружаете его, как и любой другой элемент управления на страницу:

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

Page.Controls.Add(myControl);
0 голосов
/ 15 февраля 2012

Я действительно ценю идею загрузить его на лету.

Но вы должны загружать его только тогда, когда это необходимо, и утилизировать его, как только вы закончите, или нажать кнопку во второй раз, утилизировать его и удалить элемент управления, а затем снова загрузить его ... В противном случае он всегда останется в вашем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);
0 голосов
/ 15 февраля 2012

В этом случае вы не должны загружать UserControl динамически.Конечно, лучше просто переключить Видимость всех элементов управления.Поэтому добавьте три элемента UserControls статически в ячейку таблицы и сделайте их изначально Visible="false".Затем измените эти свойства соответствующим образом в каждом событии нажатия кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...