2014-02-19 55 views
1

我有一个ASP.NET GridView有一列作为链接 - 推动链接触发JQuery调用并打开一个fancybox。一切工作,直到我把我的代码在UpdatePaneljquery不能在ASP.NET UpdatePanel中工作

一旦进入UpdatePanel,链接不再起作用。如果我将所有内容全部从UpdatePanel中取出,那么所有工作都会正常工作。

如何让JQuery识别updatePanel中的GridView链接?

  $("a.grid").click(function() { 
      var ID = this.id; 
      $.fancybox({ 
       'scrolling': true, 
       'autoSize': false, 
       'width': 1015, 
       'height': 515, 
       'transitionIn': 'fade', 
       'transitionOut': 'fade', 
       'speedIn': 200, 
       'speedOut': 300, 
       'type': 'iframe', 
       'href': 'general_stats.aspx?ID=' + ID 
      }); 
     }); 

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
CellPadding="4" DataSourceID="SqlDataSourceGenStats1" Font-Size="Smaller" 
ForeColor="#4C98AA" GridLines="None" Width="669px" Visible="False"> 
<AlternatingRowStyle BackColor="White" /> 
<Columns> 
    <asp:BoundField DataField="PERSON_ID" HeaderText="Person ID" 
     SortExpression="PERSON_ID" /> 
    <asp:BoundField DataField="FIRST_NAME" HeaderText="First Name" 
     SortExpression="FIRST_NAME" /> 
    <asp:BoundField DataField="LAST_NAME" HeaderText="Last Name" 
     SortExpression="LAST_NAME" /> 
    <asp:TemplateField HeaderText="View Stats"> 
    <ItemTemplate> 
    <a class="grid" id="<%# Eval("PERSON_ID") %>" href="#">View</a> 
    </ItemTemplate> 
     <ItemStyle HorizontalAlign="Center" /> 
    </asp:TemplateField> 
</Columns> 
<EditRowStyle BackColor="#2461BF" /> 
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
<HeaderStyle BackColor="#4C98AA" Font-Bold="True" ForeColor="White" 
    HorizontalAlign="Left" /> 
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
<RowStyle BackColor="#EFF3FB" /> 
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
<SortedAscendingCellStyle BackColor="#F5F7FB" /> 
<SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
<SortedDescendingCellStyle BackColor="#E9EBEF" /> 
<SortedDescendingHeaderStyle BackColor="#4870BE" /> 

+0

使用Javascript/jQuery代码将永远不会被从Ajax响应(你的更新面板)执行。 – Sai

+0

您使用的是标签吗? –

回答

2

您可能需要注册绑定到与PageRequestManager Click事件处理程序调用。更多详细信息可以在这里找到:http://msdn.microsoft.com/en-us/library/bb311028(v=vs.100).aspx

事情是这样的更新面板上面:

jQuery(document).ready(function() { 
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(
    function() { 
    $("a.grid").click(function() { 
     var ID = this.id; 
     $.fancybox({ 
      'scrolling': true, 
      'autoSize': false, 
      'width': 1015, 
      'height': 515, 
      'transitionIn': 'fade', 
      'transitionOut': 'fade', 
      'speedIn': 200, 
      'speedOut': 300, 
      'type': 'iframe', 
      'href': 'general_stats.aspx?ID=' + ID 
     }); 
    }); 
    } 
); 
}); 

因为回传的,它可能不是一个局部回传后装载处理。此调用将在回发和异步回发之后加载处理程序。

+0

我尝试了两种解决方案。这对我个人而言是至关重要的......至少在最少的修改中。谢谢! – RST

相关问题