如何使用ModalPopupExtender在嵌套面板中触发OnClick事件?
问题描述:
我有以下情形:如何使用ModalPopupExtender在嵌套面板中触发OnClick事件?
UpdatePanel1
- >UpdatePanel2
- >UpdatePanel3
:
它里面我有一个下面列定义一个GridView
:
<ItemTemplate>
<asp:ImageButton ID="img_btnEdit" runat="server" AlternateText="Edit"
CausesValidation="false" Height="15px" OnClientClick='<%#Eval("TranValueId", "PopulateEditTransValuesMDPP({0}); return false;") %>'
ImageUrl="~/Images/document_edit.png" Width="15px" />
</ItemTemplate>
点击时,一个ModalPopupExtender
应打开,但首先我需要检索点击行的boundfield。
JS功能:
function PopulateEditTransValuesMDPP(id) {
var btPopupLoad = document.getElementById('<%= btPopupLoad.ClientID %>');
var hdnlblModalPopuphelper = document.getElementById('<%= hdnlblModalPopuphelper.ClientID %>');
if (id != null) {
hdnlblModalPopuphelper.innerHTML = id;
}
btPopupLoad.click();
}
这里是驻留在同一UpdatePanel
作为GridView
的HTML代码的其余部分:
<asp:Label ID="hdnlblModalPopuphelper" runat="server" Text="" style="display:none;"></asp:Label>
<asp:Button ID="btPopupLoad" runat="server" Text="Load" OnClick="btPopupLoad_Click" style="display:none;" />
<ajaxToolkit:ModalPopupExtender ID="modppOpen" runat="server" TargetControlID="btPopupLoad"
PopupControlID="pnlModPPDefaultValueEditing" BackgroundCssClass="modalBackground" OkControlID="btnCloseModalPopup"
DropShadow="true" />
<asp:Panel ID="pnlModPPDefaultValueEditing" runat="server" CssClass="aspnetForm" Width="80%">
<asp:UpdatePanel ID="updpanEditDefaultValue" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveEditingTransValueDefaultValue" />
</Triggers>
(...)
问题描述: 一切工作正常,除了OnClick
事件(服务器端事件)的btPopupLoad
未触发!
我做了OnClick
事件的唯一办法炒鱿鱼是通过设置在其定义的UseSubmitBehaviour="false"
但是这造成了回传和ModalPopup
自败。 所以基本上我想OnClick Event
被触发,并在同一时间保持ModalPopup
仍然打开。
请帮忙吗?
答
我想通了由自己,所以一旦有人跑成这样了,这是怎么工作对我来说:
而不是
<ItemTemplate>
<asp:ImageButton ID="img_btnEdit" runat="server" AlternateText="Edit"
CausesValidation="false" Height="15px" OnClientClick='<%#Eval("TranValueId", "PopulateEditTransValuesMDPP({0}); return false;") %>'
ImageUrl="~/Images/document_edit.png" Width="15px" />
</ItemTemplate>
(使用打开模式弹出的哈克的方式反正)只是这样做:
HTML
<asp:ImageButton ID="img_btnEdit" runat="server" AlternateText="Edit" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" CommandName="Editing"
CausesValidation="false" Height="15px"
ImageUrl="~/Images/document_edit.png" Width="15px" />
C#:
protected void gvTransValues_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Editing")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gvTransValues.Rows[index];
//do whatever you need here
modppOpen.Show();
}
}
我基本上做的是,以取代使用隐藏的按钮或标签的整个哈克的方式,并使用CommandName
和RowCommand
事件的CommandArguments
从按钮的点击只提示modalpopup直的gridview
。