在GridView表头新增图片 实现GridView行折叠展开效果

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewExpandCollapse.aspx.cs" Inherits="GridViewExpandCollapse" %>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4. <head id="Head1" runat="server">  
  5.     <title>Expand/Collapse</title>  
  6.   
  7.     <script type="text/javascript">  
  8.         var Grid = null;  
  9.         var UpperBound = 0;  
  10.         var LowerBound = 1;  
  11.         var CollapseImage = 'images/minus.gif';  
  12.         var ExpandImage = 'images/plus.gif';  
  13.         var IsExpanded = true;  
  14.         var Rows = null;  
  15.         var n = 1;  
  16.         var TimeSpan = 25;  
  17.   
  18.         window.onload = function () {  
  19.             Grid = document.getElementById('<%= this.gvTab.ClientID %>');  
  20.             UpperBound = parseInt('<%= this.gvTab.Rows.Count %>');  
  21.             Rows = Grid.getElementsByTagName('tr');  
  22.         }  
  23.   
  24.         function Toggle(Image) {  
  25.             ToggleImage(Image);  
  26.             ToggleRows();  
  27.         }  
  28.   
  29.         function ToggleImage(Image) {  
  30.             if (IsExpanded) {  
  31.                 Image.src = ExpandImage;  
  32.                 Image.title = 'Expand';  
  33.                 Grid.rules = 'none';  
  34.                 n = LowerBound;  
  35.   
  36.                 IsExpanded = false;  
  37.             }  
  38.             else {  
  39.                 Image.src = CollapseImage;  
  40.                 Image.title = 'Collapse';  
  41.                 Grid.rules = 'cols';  
  42.                 n = UpperBound;  
  43.   
  44.                 IsExpanded = true;  
  45.             }  
  46.         }  
  47.   
  48.         function ToggleRows() {  
  49.             if (n < LowerBound || n > UpperBound) return;  
  50.   
  51.             Rows[n].style.display = Rows[n].style.display == '' ? 'none' : '';  
  52.             if (IsExpanded) n--; else n++;  
  53.             setTimeout("ToggleRows()", TimeSpan);  
  54.         }  
  55.     </script>  
  56.   
  57. </head>  
  58. <body>  
  59.     <form id="form1" runat="server">  
  60.         <div>  
  61.             <asp:GridView ID="gvTab" BackColor="WhiteSmoke" runat="server" AutoGenerateColumns="False"  
  62.                 GridLines="Vertical" ShowFooter="True">  
  63.                 <Columns>  
  64.                     <asp:TemplateField>  
  65.                         <HeaderStyle Width="25px" />  
  66.                         <ItemStyle Width="25px" BackColor="White" />  
  67.                         <HeaderTemplate>  
  68.                             <asp:Image ID="imgTab" onclick="javascript:Toggle(this);" runat="server" ImageUrl="images/minus.gif" ToolTip="Collapse" />  
  69.                         </HeaderTemplate>  
  70.                     </asp:TemplateField>  
  71.                     <asp:BoundField HeaderText="n" DataField="n">  
  72.                         <HeaderStyle Width="25px" />  
  73.                         <ItemStyle Width="25px" />  
  74.                     </asp:BoundField>  
  75.                     <asp:BoundField HeaderText="sqrt(n)" DataField="sqrtn">  
  76.                         <HeaderStyle Width="150px" />  
  77.                         <ItemStyle Width="150px" />  
  78.                     </asp:BoundField>  
  79.                     <asp:BoundField HeaderText="qbrt(n)" DataField="qbrtn">  
  80.                         <HeaderStyle Width="150px" />  
  81.                         <ItemStyle Width="150px" />  
  82.                     </asp:BoundField>  
  83.                 </Columns>  
  84.                 <HeaderStyle Height="25px" Font-Bold="True" BackColor="DimGray" ForeColor="White"  
  85.                     HorizontalAlign="Center" VerticalAlign="Middle" />  
  86.                 <RowStyle Height="25px" BackColor="Gainsboro" HorizontalAlign="Center" VerticalAlign="Middle" />  
  87.                 <AlternatingRowStyle Height="25px" BackColor="LightGray" HorizontalAlign="Center"  
  88.                     VerticalAlign="Middle" />  
  89.                 <FooterStyle BackColor="Gray" />  
  90.             </asp:GridView>  
  91.         </div>  
  92.     </form>  
  93. </body>  
  94. </html>  

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. public partial class GridViewExpandCollapse : System.Web.UI.Page  
  11. {  
  12.     protected void Page_Load(object sender, EventArgs e)  
  13.     {  
  14.         if (!IsPostBack)  
  15.         {  
  16.             gvTab.DataSource = GetDataTable();  
  17.             gvTab.DataBind();  
  18.         }  
  19.     }  
  20.   
  21.     protected DataTable GetDataTable()  
  22.     {  
  23.         DataTable dTable = new DataTable();  
  24.         DataRow dRow = null;  
  25.         Random rnd = new Random();  
  26.         dTable.Columns.Add("n");  
  27.         dTable.Columns.Add("qbrtn");  
  28.         dTable.Columns.Add("sqrtn");  
  29.   
  30.         for (int n = 1; n <= 10; ++n)  
  31.         {  
  32.             dRow = dTable.NewRow();  
  33.             dRow["n"] = n + ".";  
  34.             dRow["qbrtn"] = Math.Pow(n, 1D / 3D) + "";  
  35.             dRow["sqrtn"] = Math.Sqrt(n) + "";  
  36.             dTable.Rows.Add(dRow);  
  37.             dTable.AcceptChanges();  
  38.         }  
  39.         return dTable;  
  40.     }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值