博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net Ajax Accordion控件的用法
阅读量:7018 次
发布时间:2019-06-28

本文共 4263 字,大约阅读时间需要 14 分钟。

Accordion,翻译过来是“手风琴、可折叠”的意思,微软Asp.net ajax提供了Accordion可折叠面板控件,方便用户在系统菜单、信息展示中使用,用户体验是相当的好啊。

这个控件允许定义多个面板,当用户选中一个面板时,其余面板都会折叠起来,只显示选中面板的内容。如果我说的不够清楚,请在这里查看示例:。此外,这个控件还支持数据绑定。

 

看完了示例,该知道这个控件功能好用了吧,下面就是用法了,先说说简单的用法,定义面板、设计面板,就是这么简单,下面给出一段代码,一看就能明白:

 

        
<
ajaxToolkit:Accordion 
ID
="MyAccordion"
 runat
="Server"
 SelectedIndex
="0"
 HeaderCssClass
="accordionHeader"
            HeaderSelectedCssClass
="accordionHeaderSelected"
 ContentCssClass
="accordionContent"
            AutoSize
="Limit"
 FadeTransitions
="true"
 TransitionDuration
="250"
 FramesPerSecond
="40"
            Width
="700"
 Height
="200"
 RequireOpenedPane
="false"
 SuppressHeaderPostbacks
="true"
>
            
<
Panes
>
                
<
ajaxToolkit:AccordionPane 
HeaderCssClass
="accordionHeader"
 runat
="server"
 ContentCssClass
="accordionContent"
>
                    
<
Header
>
                        
<
span
>
1. 菜单一
</
span
>
                    
</
Header
>
                    
<
Content
>
                        
<
span
>
菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容
</
span
>
                    
</
Content
>
                
</
ajaxToolkit:AccordionPane
>
                
<
ajaxToolkit:AccordionPane 
ID
="AccordionPane1"
 HeaderCssClass
="accordionHeader"
 HeaderSelectedCssClass
="accordionHeaderSelected"
                    runat
="server"
 ContentCssClass
="accordionContent"
>
                    
<
Header
>
                        
<
span
>
2. 菜单二
</
span
>
                    
</
Header
>
                    
<
Content
>
                        
<
span
>
菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜菜单二的内容菜
</
span
>
                    
</
Content
>
                
</
ajaxToolkit:AccordionPane
>
                
<
ajaxToolkit:AccordionPane 
ID
="AccordionPane2"
 HeaderCssClass
="accordionHeader"
 HeaderSelectedCssClass
="accordionHeaderSelected"
                    runat
="server"
 ContentCssClass
="accordionContent"
>
                    
<
Header
>
                        
<
span
>
3. 菜单三
</
span
>
                    
</
Header
>
                    
<
Content
>
                        
<
span
>
菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容菜单一的内容
</
span
>
                    
</
Content
>
                
</
ajaxToolkit:AccordionPane
>
            
</
Panes
>
        
</
ajaxToolkit:Accordion
>

 

 

这个是不需要写后台代码的,拿去用就好了,既方便,又实用。

 

接下来说一下数据绑定的,在使用数据绑定时,首先需要设计好HeaderTemplate和ContentTemplate两个模板,然后在后台添加数据绑定代码就可以了。

模板设计和GridView的模板设计基本相同,下面是一段示例代码:

 

       <
ajaxToolkit:Accordion 
ID
="BindAccordion"
 runat
="Server"
 HeaderCssClass
="accordionHeader"
            HeaderSelectedCssClass
="accordionHeaderSelected"
 ContentCssClass
="accordionContent"
            AutoSize
="None"
 FadeTransitions
="true"
 TransitionDuration
="250"
 FramesPerSecond
="40"
            Width
="700"
 Height
="200"
 RequireOpenedPane
="false"
 SuppressHeaderPostbacks
="false"
>
            
<
HeaderTemplate
>
                
<
span
>
<%
# DataBinder.Eval(Container.DataItem, 
"
HeaderText
"
)
%>
</
span
>
            
</
HeaderTemplate
>
            
<
ContentTemplate
>
                
<
span
>
<%
# DataBinder.Eval(Container.DataItem, 
"
ContentText
"
)
%>
</
span
>
            
</
ContentTemplate
>
        
</
ajaxToolkit:Accordion
>

有了这段代码,接下来就是后台的数据绑定了。能够接受的数据源不能使DataTable,不知道为什么,笔者试了DataView和List<>,都是可以的,唯独不能用DataTable,但这个没有关系,如果你的数据格式是DataTable,直接用它的DefaultView就可以了。下面是代码:

 

                
//
第一种绑定方法
                DataTable dt 
=
 
new
 DataTable();
                dt.Columns.Add(
"
HeaderText
"
);
                dt.Columns.Add(
"
ContentText
"
);
                dt.Rows.Add(
new
 
object
[] { 
"
菜单一
"
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 });
                dt.Rows.Add(
new
 
object
[] { 
"
菜单二
"
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 });
                dt.Rows.Add(
new
 
object
[] { 
"
菜单三
"
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 });
                dt.Rows.Add(
new
 
object
[] { 
"
菜单四
"
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 });
                dt.Rows.Add(
new
 
object
[] { 
"
菜单五
"
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 });
                
//
数据源需要是一个DataView,不知为何
                
this
.BindAccordion.DataSource 
=
 dt.DefaultView;
                
this
.BindAccordion.DataBind();
                

上面是实用DataTable的方法,也是我们常常用到的。另外一个是List<>,为了方便起见,我们先定义一个类:

 

    
class
 myItem
    {
        
public
 
string
 HeaderText
        { 
get
set
; }
        
public
 
string
 ContentText
        { 
get
set
; }
    }

然后实用这个类的List来作为数据源:

 

                
//
第二种绑定方法
                List
<
myItem
>
 itemList 
=
 
new
 List
<
myItem
>
() 
                { 
                    
new
 myItem { HeaderText 
=
 
"
菜单一
"
, ContentText
=
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 },
                    
new
 myItem { HeaderText 
=
 
"
菜单二
"
, ContentText
=
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 },
                    
new
 myItem { HeaderText 
=
 
"
菜单三
"
, ContentText
=
"
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
"
 }
                };
                
this
.BindAccordion.DataSource 
=
 itemList;
                
this
.BindAccordion.DataBind();
本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2011/04/18/2020159.html,如需转载请自行联系原作者
你可能感兴趣的文章
Java并发编程系列之四:volatile和锁的内存语义
查看>>
(一一九)类作用域
查看>>
MFC学习笔记之一(绘图+控制)
查看>>
C++语言之动态内存分配
查看>>
PgSQL · 答疑解惑 · PostgreSQL 9.6 并行查询实现分析
查看>>
分布式系统的理解
查看>>
微服务熔断与隔离
查看>>
html中link的用法
查看>>
RSA非对称加密
查看>>
【基础】利用 hexo + Gitpage 开发自己的博客
查看>>
Android Unity调用心得
查看>>
Glide 4.9 源码分析(一) —— 一次完整加载流程
查看>>
JPA/Hibernate/Spring Data概念
查看>>
Vue Render介绍和一些基本的实例
查看>>
oracle业务硬盘出现故障无法访问,提示需要重新格式化后解决方法
查看>>
阿里云腾讯云服务器部署安装 Mysql5.7.20 【三部曲之一】
查看>>
webpack打包合并
查看>>
[转] 如何实现 React 写小程序-1
查看>>
iOS开发之 Method Swizzling 深入浅出
查看>>
[实战验证] http缓存(无代理服务器)
查看>>