AJAX之四 Ajax控件工具集(上)

简介: AJAX之四 Ajax控件工具集(上)

[学习目标]


F    理解并掌握ScriptManager控件的使用


F    了解ScriptManager控件的使用


F    理解并掌握Timer控件的使用


F    理解并掌握UpdatePanel控件的使用


F    理解并掌握UpdateProgress控件的使用


         【本章简介】


         在上一章中,我们学习了Asp.Net AJAX的核心组件UpdatePanel、ScriptManager等。最后我们通过使用AutoComplete控件,用很少的代码就实现了自动完成功能。我们发现在Asp.Net的AJAX解决方案中,通过控件方式极大地提高了传统了AJAX效果的开发效率。


在这一章中,我们将继续介绍其他一些重要的Asp.Net AJAX扩展控件,包括Accordion、CollapsiblePanel、Rating、Calendar、ModalPopup、Tabs等。


本章的下面几节将介绍这些控件工具集,及如何在Asp.Net程序中使用它们。


4.1  Accordion控件

4.1.1 Accordion控件简介



Accordion控件是用来实现菜单折叠效果的控件。它常用来做导航菜单和分组数据的展示等,如我们的QQ、MSN等面板效果都可以用Accordion控件来实现。Accordion控件可以看成是一组面板,但每次只能显示一个面板,如图4-1所示。一个面板可以分为标题和内容两部分,如图4-2所示。

图4-1 菜单折叠效果                                            图4-2 一次只能显示一个面板

 

Accordion控件的属性非常多,这里只介绍其模板和主要的属性。


属性

描述

SelectedIndex

默认选择的面板索引

HeaderCssClass

整个菜单的标题样式

ContentCssClass

菜单的内容样式

AutoSize

内容的显示方式,主要有None、Limit和Fill三种,其中None表示可以被无限地拉伸和收缩。

Panes

Pane是Accordion控件的内容所在,里面只能包括AccordionPane控  件。可以由多个Panes和AccordionPane。

HeaderTemplate

标题模板

ContentTemplate

内容模板 


4.1.2 Accordion控件的使用



Accordion控件用来实现菜单效果的方法,一般分为如下两种。


n        实现静态菜单效果。


n        动态生成Accordion菜单。


   1.静态菜单效果


   我们可以使用多个AccordionPane,分别指定它们的Header和Content属性即可实现。代码如程序清单4-1所示:


程序清单4-1:Accordion实现静态菜单


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Accordion.aspx.cs" Inherits="_Default"%>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"TagPrefix="cc1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Accordion静态菜单效果</title>
    <style type="text/css">
        .headerBg{cursor:hand;width:160px;height:30px;color:#ffffff;font-weight:bold;background-image:url(ajaxmenubg.gif);line=height:30px}
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1"runat="server"/>
        <div style="text-align:center;width:18%">
            <cc1:Accordion ID="Accordion1"runat="server"HeaderCssClass="headerBg">
                <Panes>
                    <cc1:AccordionPane ID="AccordionPane1"runat="server">
                       <Header>人事管理</Header>
                       <Content><br />
                           <b>机构信息</b><br /><br />
                           <b>用户信息</b><br /><br />
                       </Content>
                    </cc1:AccordionPane>
                    <cc1:AccordionPane ID="AccordionPane2"runat="server">
                       <Header>日程管理</Header>
                       <Content><br />
                           <b>个人日程</b><br /><br />
                            <b>部门日程</b><br /><br />
                       </Content>
                    </cc1:AccordionPane>
                </Panes>
            </cc1:Accordion>
            &nbsp;</div>
    </form>
</body>
</html>


设计效果如图4-1所示。Panes有两个AccordionPane控件,其中AccordionPane有两个模板:Header和Content,对应有两个样式:HeaderCssClass和ContentCssClass。Header模板用来显示面板的标题部分,Content模板用来加载面板的内容部分。




2.Accordion动态菜单


 


   前面我们实现了静态菜单,在实际应用中是不能满足需要的。我们往往需要把数据库中的数据动态展示出来。


   根据静态菜单,我们设计两个主从表如图4-2所示


protected void Page_Load(objectsender, EventArgs e)
    {
        if (!IsPostBack)
        {
           ShowInfo();
        }
    }
    protected voidShowInfo()
    {
        //得到所有分类信息
        using (SqlConnectionconn = new SqlConnection())
        {
           conn.ConnectionString = "server=.;database=MyOffice;uid=sa;pwd=123456";
           conn.Open();
            string selSql = "select* from Kind";
            SqlDataAdapter sda = newSqlDataAdapter(selSql, conn);
            DataTable dt = new DataTable();
           sda.Fill(dt);
            for (int i = 0; i< dt.Rows.Count; i++)
            {
                //实例化一个AccordionPane控件
                AccordionPaneap = new AccordionPane();
                Label lblKind = new Label();
               lblKind.Text = dt.Rows[i]["KName"].ToString();
                //添加子标签;首先,得到父类别的id
                int id = Convert.ToInt32(dt.Rows[i]["Id"]);
                string selSql2 = string.Format("select * from ChildInfo where KId={0}",id);
                sda= new SqlDataAdapter(selSql2,conn);
                DataTable dt2 = new DataTable();
               sda.Fill(dt2);
                for (int j = 0; j< dt2.Rows.Count; j++)
                {
                    HyperLink hlinkBookMenu=newHyperLink();
                   hlinkBookMenu.Text = dt2.Rows[j]["CIName"].ToString()+"<br>";
                    ap.ContentContainer.Controls.Add(hlinkBookMenu);
                }
               ap.HeaderContainer.Controls.Add(lblKind);
               Accordion1.Panes.Add(ap);
            }
        }
    }
目录
相关文章
|
SQL 开发框架 前端开发
AJAX之四 Ajax控件工具集(下)
AJAX之四 Ajax控件工具集(下)
54 0
|
开发框架 前端开发 .NET
AJAX之四 Ajax控件工具集(中)
AJAX之四 Ajax控件工具集(中)
73 0
|
开发框架 前端开发 .NET
Ajax之三 Ajax服务器端控件(下)
Ajax之三 Ajax服务器端控件(下)
67 0
|
开发框架 前端开发 JavaScript
Ajax之三 Ajax服务器端控件(上)
Ajax之三 Ajax服务器端控件
74 0
|
JavaScript 前端开发 .NET