2011-08-29 35 views

回答

1

這應該爲你工作:

showPanel = function(this){ 
    var panel = document.getElementById("<%=pnlDetails.ClientID%>"); 
    if (panel){ 
     panel.style.display = "block"; 
    } 
} 

因爲你沒有做任何事的,我不認爲你需要到LinkBut​​ton的一個引用傳遞,無論是。

0

我會假設面板是一個ASP控制命名面板,<asp:panel ...之一。

無論您的控制權在哪裏(網格內部或網格外),過程總是相同的,您需要將click事件掛接到該面板的顯示/隱藏。

更新面板(這樣你就可以避免共做回發只是加載網頁的一部分)通過了一年的工作帶我離開這個做法,我今天簡單地使用顯示/隱藏一個div,例如:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="lnk" runat="server" Text="Click to open" OnClientClick="showPanel(this);" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

<asp:Panel ID="pnlDetails" runat="server" CssClass="panel" style="display:none;"> 
    <h2> 
     This is a title</h2> 
    <p> 
     This is the description</p> 
</asp:Panel> 

<script type="text/javascript"> 
    function ShowPanel(elm) { 
     alert('you have clicked me'); 
    } 
</script> 

每次點擊該鏈接按鈕時,它都會提醒你。

<asp:panel轉換爲一個簡單的<div>,所以它很容易使用,你可以簡單地驗證<div>是否已經打開,然後關閉它,如果關閉,打開它。

使用jQuery以方便處理和JavaScript的,你會作出這樣的ShowPanel功能書寫:

<script type="text/javascript"> 
    var pnlId = '#<%= pnlDetails.ClientID %>'; 

    function ShowPanel(elm) { 


     if ($(pnlId).is("visible")) 
      $(pnlId).hide(); 
     else 
      $(pnlId).show(); 
    } 
</script> 

可以使用可變elm(元素);如果你想鏈接按鈕行區分。

相關問題