Работа с asp.net, у меня есть gridview внутри панели обновления, заполненной динамическими пользовательскими элементами управления (загружается в placeholder1 на rowdataound). Пользователь вводит текст в текстовое поле пользовательского элемента управления, нажимает кнопку «подтвердить» пользовательского элемента управления, модальное всплывающее окно отображает сообщение «подтверждение» со значением пользователя в текстовом поле. Событие нажатия кнопки пользовательского элемента управления обрабатывает значения параметров модального всплывающего расширителя и показывает всплывающее окно.Невозможно установить управляющие значения ModalPopupExtender с помощью UpdatePanel в ASP.NET
Это работает, как ожидалось, когда сетка не находится на панели обновления/панель обновления не используется. Когда я помещаю gridview на панель обновления, когда появляется модальное всплывающее окно, оно не отображает значения, которые были установлены в событии нажатия кнопки (я подтвердил, что событие щелчка запускается, элементы управления находятся, и значения установив в этом случае). Я должен что-то упустить ... и/или не совсем понимаю архитектуру панели обновления и то, как она ведет себя с динамическими элементами управления.
[код ниже упрощена]
GridView
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="gvSaleData" runat="server" DataKeyNames="ItemNumber"
AutoGenerateColumns="False" ShowFooter="True" />
<Columns>
<asp:TemplateField ShowHeader="false">
<ItemTemplate>
<div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
MODAL POPUP
<asp:modalpopupextender id="mp1" runat="server"
cancelcontrolid="btnCancel"
targetcontrolid="btnShow" popupcontrolid="pnlShow"
popupdraghandlecontrolid="PopupHeader" drag="true"
backgroundcssclass="ModalPopupBG">
</asp:modalpopupextender>
<asp:panel id="pnlShow" style="display:none" runat="server">
<div class="popupcontainer">
<div>Your Value: <asp:Label ID="lblUserValue" runat="server" Text=""></asp:Label></div>
<asp:Button ID="btnConfirm" runat="server" Text="Confirm"
onclick="btnConfirm_Click" CssClass="submit"/>
<asp:Button ID="btnCancel" runat="server" Text="Return"
onclick="btnCancel_Click" CssClass="submit"/>
</div>
</asp:panel>
CONTROL USER CODE ПОЗАДИ
protected void btnShowConfirmation_Click(object sender, EventArgs e)
{
AjaxControlToolkit.ModalPopupExtender mp =(AjaxControlToolkit.ModalPopupExtender)Page.FindControl("mp1");
Label lblUserValue = (Label)mp.FindControl("lblUserValue");
lblUserValue.Text = textbox1.Text;
mp.Show();
}
Я полагаю, я мог бы переложить большую часть этой стороны клиента. Я делаю некоторую проверку ввода данных из базы данных и используя этот метод для разных пользовательских элементов управления, выполняющих различные функции на странице, но выполнение этой клиентской стороны приведет к более быстрым нагрузкам и лучшему ux. – user2175152