Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
尚未分类 LINQ教程 Enterprise技术 性能优化/调试 水晶报表与打印 安全与加密 图形图像 文件处理 基础教程 Web Services 内置对象控件示例 正则表达式\采集 ADO.NET 缓存\泛型\线程 XML技术 Url重写\静态页 vs2008综合教程
当前位置: 主页 > ASP.NET教程 > 控件示例 >

展开和折叠GridView行

时间:2010-03-18 16:22来源:未知 作者:admin 点击:

      这篇文章介绍了使用JavaScript折叠/展开GridView行的功能,为了实现所希望的效果,我在GridView的表头放置了一张图片,当点击对应图片时,GridView将会折叠和展开行。

效果图:

HTML代码
       在GridView中添加一个模板列,把图片放到模板列中的HeaderTemplate中,此GridView的HTML代码如下:
1<asp:GridView ID="gvTab" BackColor="WhiteSmoke" runat="server" AutoGenerateColumns="False" GridLines="Vertical"
 2                                                                                             ShowFooter="True">
 3   <Columns>
 4      <asp:TemplateField>
 5         <HeaderStyle Width="25px" />
 6         <ItemStyle Width="25px" BackColor="White" />
 7         <HeaderTemplate>
 8            <asp:Image ID="imgTab" onclick="javascript:Toggle(this);" runat="server" ImageUrl="~/minus.gif"
 9                                                                                         ToolTip="Collapse" />
10         </HeaderTemplate>
11      </asp:TemplateField>
12      <asp:BoundField HeaderText="n" DataField="n">
13         <HeaderStyle Width="25px" />
14         <ItemStyle Width="25px" />
15      </asp:BoundField>
16      <asp:BoundField HeaderText="sqrt(n)" DataField="sqrtn">
17         <HeaderStyle Width="150px" />
18         <ItemStyle Width="150px" />
19      </asp:BoundField>
20      <asp:BoundField HeaderText="qbrt(n)" DataField="qbrtn">
21         <HeaderStyle Width="150px" />
22         <ItemStyle Width="150px" />
23      </asp:BoundField>
24   </Columns>
25   <HeaderStyle Height="25px" Font-Bold="True" BackColor="DimGray" ForeColor="White" HorizontalAlign="Center"
26                                                                                    VerticalAlign="Middle" />
27   <RowStyle Height="25px" BackColor="Gainsboro" HorizontalAlign="Center" VerticalAlign="Middle" />
28   <AlternatingRowStyle Height="25px" BackColor="LightGray" HorizontalAlign="Center" VerticalAlign="Middle" />
29   <FooterStyle BackColor="Gray" />
30</asp:GridView>
GridView的表头图片绑定onclick事件
<asp:Image ID="imgTab" onclick="javascript:Toggle(this);" runat="server" ImageUrl="~/minus.gif"    ToolTip="Collapse" />

JavaScript代码
         把下面的代码放到script标签中。    

       在上面的代码中,全局参数是在window.onload事件中初始化的。有三个方法:toogle ToogleImage和ToggleRows。Toogle方法响应一个click事件,它先找到表头中的图片,然后通过调用ToogleImage和ToggleRows来实现我们的目的。注意在ToggleRows方法中,为了实现一些动态的效果,我们重复使用了setTimeout方法。
    为了在折叠展开中有一定的迟缓,每一次调用ToggleRows方法都设置了25毫秒,你可以根据需要改变TimeSpan的值。

 

<script type="text/javascript">
 
var Grid = null;
 
var UpperBound = 0;
 
var LowerBound = 1;
 
var CollapseImage = 'minus.gif';
 
var ExpandImage = 'plus.gif';
 
var IsExpanded = true;   
 
var Rows = null;
 
var n = 1;
 
var TimeSpan = 25;
        
 window.onload 
= function()
 
{
    Grid 
= document.getElementById('<%= this.gvTab.ClientID %>');
    UpperBound 
= parseInt('<%= this.gvTab.Rows.Count %>');
    Rows 
= Grid.getElementsByTagName('tr');
 }

        
 
function Toggle(Image)
 
{
    ToggleImage(Image);
    ToggleRows();  
 }
    
        
 
function ToggleImage(Image)
 
{
    
if(IsExpanded)
    
{
       Image.src 
= ExpandImage;
       Image.title 
= 'Expand';
       Grid.rules 
= 'none';
       n 
= LowerBound;
             
       IsExpanded 
= false;
    }

    
else
    
{
       Image.src 
= CollapseImage;
       Image.title 
= 'Collapse';
       Grid.rules 
= 'cols';
       n 
= UpperBound;
                
       IsExpanded 
= true;
    }

 }

        
 
function ToggleRows()
 
{
    
if (n < LowerBound || n > UpperBound)  return;
                            
    Rows[n].style.display 
= Rows[n].style.display == '' ? 'none' : '';
    
if(IsExpanded) n--else n++;
    setTimeout(
"ToggleRows()",TimeSpan);
 }

 
</script>

GridViewExpandCollapse.rar

(责任编辑:admin)
Tags:GridView 展开和折叠
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价
  • 用UpdatePanel异步展开GridView行数据

    在MIS系统中经常用到查询出数据列表后,展开及收缩详细信息操作,下面介绍一种非常直观的异步展开方式,异步的展开方式同时也可以减轻系统压力: 步骤: 1. 在你的...

  • 甩掉DataList,Repeater列表数据显示得灵活

    在WebForm 显示列表数据我们一般使用服务器控件Repeater、DataList或者GridView ,功强大能,使用简单。但同时也是有代价的, 一:不管...

  • GridView中的CheckBox令其支持FireFox

    GridView中的CheckBox令其支持FireFox...

  • 动态创建Repeater并绑定数据

    有一个菜单树,因为界面上的限制(要求)不能使用现有的控件。 那我就想到了用Repeater控件自己来写,可以灵活、方便的控制页面。 asp:Repeater I...

  • ListView与CheckBox,EditText,Button结合

    这段时间没有写多少博客,主要是天气冷,加上没有网更是不想动。这段时间的知识点快忘记了,赶紧把它复习下。 今天说的比较简单:那就是当ListView与CheckB...

  • Menu控件+SQLServer实现动态多级菜单

    首先是数据表的设计 其中treeId指的是该菜单项的父ID,如果treeId为0.表示该菜单项为根菜单项,否则表示他为某菜单项的子菜单,比如id为2的项,他的父...

  • C# TreeView控件用于权限操作

    这几天试用了下vs2008,实现的功能是: 1.当选勾选的节点下有子节点,所有子结点跟随勾选结点的Checked状态改变. 2.当某结点选中,假如其存在父结点,...

  • 两个Checkbox的控制

    今天实现了一个在GridView中要实现的一个功能。 我需要将GridView中的两列中的Checkbox只选定一个。在1st javaScript中终于实现了...

  • 使用NHibernate绑定页面数据时,出现"未能加载视图状态,正在向其中加载视图状

    在使用NHibernate为页面数据控件绑定数据时,出现如下提示:未为能加载视图状态,正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相...

  • 遍历gridview查找某类控件

    遍历gridview查找某类控件...

  • 深入解析DataGrid过滤功能

    过滤是DataGrid这样的表格控件的基本功能之一,也是非常重要的特性。微软提供的标准DataGrid相信大家都很熟悉了。本文要解析的不是标准DataGrid,...

  • ASP.NET动态增加控件应用篇(二)

    此篇,是 前篇 应用篇(一)的延续,也是进阶版。在本篇中使用一个aspx 档案来同时实现,资料清单的显示以及资料编辑同在一起的示范。 当然,资料字段少的时候,可...

  • ASP.NET动态增加控件(应用篇一)

    首先,先新增 MyBase 这各类,这各类的用途,同前篇的介绍,主要在封装一些 函式,目的在让 後面继承者,只需考虑 介面、处理介面上使用者所输入的值, ...

  • ASP.NET动态加载控件(JavaScript篇)

    今天 想DEMO 一下,使用 动态控件 来增加 JavaScript 的功能 平常 在做 互动网页时,JavaScript 跟 ASP.NET 的互动 一定会 ...

  • ASP.NET动态增加控件(Event篇)

    如对 动态增加 控件 没概念的人,请参阅 ASP.NET 动态加载控件 基础篇 这篇来示范,动态增加页面控件并设定回传事件,在事件中 取得 动态增加的控件中输入...