【发布时间】:2013-11-21 21:18:03
【问题描述】:
使用 asp.net,我在更新面板中有一个 gridview,填充了动态用户控件(加载在 rowdatabound 上的 placeholder1 中)。用户在用户控件的文本框中输入文本,单击用户控件的“确认”按钮,模式弹出窗口显示“确认”消息,其中包含用户对文本框的值。用户控件的按钮单击事件处理设置模式弹出扩展器控件值并显示弹出窗口。
当 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>
模式弹出窗口
<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>
隐藏的用户控制代码
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();
}
【问题讨论】:
-
我想我可以卸载大部分客户端。我正在对数据库的输入进行一些验证,并将此方法用于在页面上执行不同功能的不同用户控件,但执行此客户端会导致更快的加载和更好的用户体验。
标签: asp.net updatepanel modalpopup