Я хочу обновить свою страницу asp.net после того, как кто-то нажмет кнопку "Add". Однако кнопка "Add" является частью пользовательского элемента управления в другом пользовательском элементе управления, и дочерний элемент управления и родительское управление оба перенесены в Панели Обновления: Код ниже сокращен для дисплея, существует причина, которая пользовательский элемент управления в другом пользовательском элементе управления
В первом управлении:
<ajax:UpdatePanel ID="Panel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<uc:Control2 ID="Custom2" runat="server" />
</ContentTemplate>
</ajax:UpdatePanel>
Затем внутри control2
<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton>
</ContentTemplate>
</ajax:UpdatePanel>
Если вы хотите перезагрузить всю страницу (и не только содержимое обновленияPanels), вы можете сделать:
Page.Response.Redirect("mypagename.aspx");
Я предполагаю, что вы хотите обновить страницу, чтобы новый добавленный элемент отображается на странице ... правильно? Если это так, то вы можете получить databind ваш контроль данных как часть события addbutton_click. Например, если у вас есть сетка, показывающая элементы, то пользователь нажимает на кнопку «Добавить», чтобы добавить новый элемент, вы можете поместить следующий код в событии AddButton_Click для «Обновить» содержимое управления данными и отобразить вновь добавленные Пункт:
protected void AddButton_Click(object sender, EventArgs e)
{
myGrid.DataBind();
}
Надеюсь, это поможет.
Вы не указываете конфигурацию вашего менеджера скрипта, однако предполагая, что у вас есть менеджер скрипта, сконфигурированный следующим образом:
<ajax:ScriptManager runat="server" ID="myScriptManager" EnablePartialRendering="true"></ajax:ScriptManager>
затем добавьте этот триггер к шаблону обновленияPanel для Control2, так что это выглядит как Следует:
<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="AddButton" />
</Triggers>
</ajax:UpdatePanel>
Это будет вызвать обратную сигнал, которая позволит вам перезагрузить связанные данные (в странице_load) и также повторно отобразит всю страницу, а не только содержимое вашей панели внутренней обновления.
Предполагая, что у вас нет контроля над управлением родительского пользователя, вы можете найти элемент управления, поисшив через элементы управления дочерним элементом управления родительским элементом управления ( FindControl
). Затем, как только у вас есть ссылка на него, вы можете добавить обработчик событий:
btnAddButton.OnClick += new EventHandler(MethodThatRefreshesPage);
, поскольку вы находитесь в обновлениях панелях, вам нужно будет что-то вроде RACK.REDIRECT (запрос.rawurl)
для обновления всю страницу.
Конечно, если у вас есть контроль над родительским элементом управления пользователями, вы создаете свое собственное событие «Addclicked» и передайте подписки на кнопку ссылки ..OR, вы могли бы просто разоблачить саму LinkButton в качестве публичной собственности на Управление пользователем.
Как насчет пузырька событий ( http://odetocode.com/code/94.aspx )?