2015-04-23 44 views
1

我有以下情形:如何使用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作爲GridViewHTML代碼的其餘部分:

<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仍然打開。

請幫忙嗎?

回答

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> 

(使用打開模式彈出的哈克的方式反正)只是這樣做:

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(); 
    } 
} 

我基本上做的是,以取代使用隱藏的按鈕或標籤的整個哈克的方式,並使用CommandNameRowCommand事件的CommandArguments從按鈕的點擊只提示modalpopup直的gridview