2011-08-29 75 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(元素);如果你想链接按钮行区分。

相关问题