我有以下情况:
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
,但首先我需要检索所单击行的边界。
JS功能:
function PopulateEditTransValuesMDPP(id) {
var btPopupLoad = document.getElementById('<%= btPopupLoad.ClientID %>');
var hdnlblModalPopuphelper = document.getElementById('<%= hdnlblModalPopuphelper.ClientID %>');
if (id != null) {
hdnlblModalPopuphelper.innerHTML = id;
}
btPopupLoad.click();
}
以下是 HTML代码的其余部分,与UpdatePanel
位于同一GridView
:
<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
的{{1}}事件(服务器端事件)未被触发!
我让btPopupLoad
事件被解雇的唯一方法是在其定义中设置OnClick
,但这会导致回发和UseSubmitBehaviour="false"
消息。
所以基本上我希望触发ModalPopup
并同时保持OnClick Event
仍然打开。
请帮帮忙?
答案 0 :(得分:0)
我自己想出来,所以如果有人碰到这个,这就是它对我有用的方式:
而不是
<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>
(无论如何使用hacky方式打开模态弹出窗口)只需这样做:
<强> 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();
}
}
我基本上做的是取代使用隐藏按钮或标签的整个hacky方式,只需使用CommandName
和CommandArguments
RowCommand
点击按钮直接提示modalpopup } gridview
的事件。