2014-02-26 63 views
-1

GridView控件與更新面板jQuery函數與更新面板

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
    <asp:GridView ID="GridView1" CssClass="GridGis" runat="server" AutoGenerateColumns="False" PageSize="5" OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="True" > 
     <Columns> 
      <asp:BoundField DataField="nome" HeaderText="Nome" /> 
      <asp:BoundField DataField="idade" HeaderText="Idade" /> 
      <asp:BoundField DataField="cidade" HeaderText="Cidade" /> 
      <asp:BoundField DataField="uf" HeaderText="UF" /> 
      <asp:BoundField DataField="datanasc" HeaderText="Data/Nascimento" DataFormatString="{0:dd/MM/yyyy}" /> 

      <asp:BoundField DataField="salario" HeaderText="Salário" /> 
     </Columns> 


    </asp:GridView> 
      </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Button4" EventName="Click" /> 
     </Triggers> 
     </asp:UpdatePanel>` 
+0

當一個UpdatePanel刷新HTML內容被完全取代。由於您顯示的代碼量很小,我只能猜測您是綁定事件還是將插件應用於UpdatePanel中的內容,在面板刷新時這些內容都會丟失。刷新後,您需要重新綁定處理程序並重新應用插件。 。 –

+0

我不使用插件,我的jQuery函數:」 $( 「#GridView1 TR」)懸停( 函數(){$ (本)的.css({ 「背景色」: 「淺綠」}); $(本)的CSS({ 「光標」: 「指針」});} , 函數(){$ (本)的CSS({ 「背景色」: 「白」});} );」 – Tiago

+0

但是,您正在綁定事件處理程序。 '.hover()'是應用'mouseenter'和'mouseleave'事件處理程序的簡寫。在UpdatePanel刷新後重新綁定處理程序,或者使用事件委託將處理程序綁定到UpdatePanel之外的某個事件。 –

回答

0

你正在失去你的事件處理程序在UpdatePanel刷新時更新後發生此問題的更新GridView控件後停止響應。我的建議是使用事件委託,所以你不必擔心重新綁定:

$(document).on('mouseenter', '#GridView1 tr', function() { 
    $(this).css({ "background-color": "lightgreen", "cursor": "pointer" }); 

}).on('mouseleave', '#GridView1 tr', function() { 
    $(this).css({ "background-color": "white" }); 

}); 

如果你能找到一個祖先比document接近GridView,但還是UpdatePanel之外,這將是理想的。

另外,這個東西簡單的可能是更好的純CSS解決:

#GridView1 tr { 
    background-color:white; 
    cursor:pointer; 
} 

#GridView1 tr:hover { 
    background-color:lightgreen; 
} 
+0

是的,解決了我的問題,非常感謝 – Tiago