使用Div单击事件作为UpdatePanel的触发器

时间:2014-01-06 12:11:33

标签: c# asp.net

我使用div作为图像按钮,因为ASP Imagebutton无论如何都会导致点击闪烁。

Div点击引发服务器端事件以绑定网格,它运行良好。只是整个页面加载。为了不这样做,我试图将它作为触发器。

现在,它给出了错误 -

  

'div1通过RegisterAsyncPostBackControl或   RegisterPostBackControl必须实现   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();
          }
      }
    }
}

任何使这项工作的方法?

1 个答案:

答案 0 :(得分:0)

你可以在更新面板内添加一个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 collapsible并使用简单的html div,请将tabindex添加到div,并使用click事件:

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