【问题标题】:asp.net button does not fire inside updatepanelasp.net 按钮不会在更新面板中触发
【发布时间】:2013-01-29 17:32:18
【问题描述】:

我在未触发的更新面板中有一个按钮 (btnTransferAccept)。我将它添加为触发器,但它仍然什么也不做。该按钮应该触发 javascript 警报。如果我删除更新面板外的按钮,它可以正常工作。

有什么想法吗?谢谢

这是我的代码:

 <asp:UpdatePanel ID="pnlTransferOwnership" ChildrenAsTriggers="true" runat="server" >
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="gvTransferOwner" />
            <asp:AsyncPostBackTrigger ControlID="btnTransferAccept" />
        </Triggers>
        <ContentTemplate>

            <asp:Gridview id="gvTransferOwner" CellPadding="0" GridLines="None" CellSpacing="0" runat="server" AutoGenerateColumns="false"
             onrowcommand="gvTransferOwner_RowCommand">
                <Columns>
                    <asp:TemplateField>    
                        <ItemTemplate>
                            <asp:HiddenField ID="hfID" Value='<%#Eval("ID") %>' runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="FirstName" HeaderText="First Name"  />
                    <asp:BoundField DataField="LastName" HeaderText="Last Name" />
                    <asp:BoundField DataField="EmailAddress" HeaderText="Email Address" />
                    <asp:buttonfield buttontype="Button" commandname="Select" headertext="Transfer" text="Select" />
                </Columns>
            </asp:Gridview>

            <div class="ui-dialog-buttonset">
                <asp:Button ID="btnTransferAccept" runat="server" CssStyle="display: none;" Text="Transfer" cssClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" />
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

【问题讨论】:

  • 你是在 jQuery 对话框中把它包装起来吗?
  • 是的,jQuery 对话框工作正常。当我从 UpdatePanel 中取出“btnTransferAccept”,但仍在 jQuery 对话框中时,它工作正常。
  • 如果将UseSubmitBehavior="false" 添加到按钮控件会发生什么?
  • 为什么没有设置AsyncPostBackTrigger的EventName属性?应该是EventName="Click"

标签: asp.net .net vb.net


【解决方案1】:

您需要将 javascript 警报放在 PageLoad 事件中,而不是 window onload 或 jquery ready 事件中。

下面的链接会给你详细的解释。

http://encosia.com/document-ready-and-pageload-are-not-the-same/

【讨论】:

    【解决方案2】:

    不确定这是否是问题所在,但请尝试将触发器移到内容模板下方。您的代码应如下所示:

    <ContentTemplate>
    ....
    </ContentTemplate>
    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="gvTransferOwner" />
      <asp:AsyncPostBackTrigger ControlID="btnTransferAccept" />
    </Triggers>
    </asp:UpdatePanel>
    

    【讨论】:

      【解决方案3】:

      在进行更新面板时,尝试将所有的 ctrl 放入更新面板中

             </ContentTemplate>
              <Triggers>
              <asp:AsyncPostBackTrigger ControlID="gvTransferOwner" />
              <asp:AsyncPostBackTrigger ControlID="btnTransferAccept" />
              </Triggers>
             </asp:UpdatePanel>
      
         and the whole with in a <div>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-25
        • 1970-01-01
        相关资源
        最近更新 更多