2014-01-06 148 views
2

我正在使用div作爲圖像按鈕,因爲ASP Imagebutton在點擊時導致閃光,無論如何。使用Div Click事件作爲UpdatePanel的觸發器

Div點擊引發一個服務器端事件來綁定網格,它的效果很好。只是整個頁面加載。爲了不這樣做,我試圖把它作爲觸發器。現在

,它給人的錯誤 -

'DIV1正在通過RegisterAsyncPostBackControl或 RegisterPostBackControl reistered必須實現 作INamingContainer,IpostBackDataHandler,或IpostbackEventHandler'

ASPX:

<div id="div1" runat="server" class="search"></div> 
<asp:UpdatePanel runat="server" updatemode="conditional"> 
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="divSearch" EventName="Click"/> 
</Triggers> 
<ContentTemplate> 
    <asp:gridview....../> 
</ContentTemplate> 
</asp:UpdatePanel> 

C#:

public partial class Home: System.Web.UI.Page, IPostBackEventHandler 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     div1.Attributes["onclick"] = ClientScript. 
            GetPostBackEventReference(this, "div1_Click"); 
    } 

    protected void div1_Click() 
    { 
     bindGrid(); 
    } 

    public void RaisePostBackEvent(string eventArgument) 
    { 
     if (!string.IsNullOrEmpty(eventArgument)) 
     { 
     if (eventArgument == "div1_Click") 
      { 
      div1_Click(); 
      } 
     } 
    } 
} 

什麼辦法,使這項工作?

+0

錯誤說明了這一切:「* InamingContainer,IpostBackDataHandler或IpostbackEventHandler *」。改爲嘗試'asp:panel'。 – Abhitalks

+0

沒有。一樣。它對你有用嗎? – Ruby

+0

這是因爲div標記不支持PostBack事件。 –

回答

0

你可以在更新pannel裏面添加一個asp按鈕,這個按鈕的css屬性爲display = none並且在div上點擊jquery,觸發asp按鈕的點擊。

<div id="jqmCollapsibleDiv" data-role="collapsible"> 
      <h3>Title</h3> 
      <asp:UpdatePanel runat="server" ID="UpdatePannel1"> 
       <ContentTemplate> 
        <%-- Update pannel content --%> 
       <div style="display: none"> 
        <asp:Button runat="server" ID="btnTrigger" OnClick="btnTrigger_Click" /> 
       </div> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
     </div> 

jQuery代碼

 $("#jqmCollapsibleDiv").collapsible({ 
      expand: function (event, ui) { 
       $("#btnTrigger").click(); 
      } 
     }); 

如果你不使用jQuery Mobile的可摺疊和可使用簡單的HTML DIV,在tabIndex添加到一個div,並使用單擊事件:

$('#simpleHtmlDiv').click(function(){ 
    $("#btnTrigger").click(); 
});