zoukankan      html  css  js  c++  java
  • DataList 嵌套 Repeater 实现 二级菜单

    实现本文所讲的效果首先要对:Jquery  Css 略懂。

    因为本人在这方面,也是个小白!只实现了一部分效果,还请大家补充!

    内容分析:

      首先在页面上放置一个datalist, 然后在datalist里面放置一个Repeater

    在datalist的ItemDataBound事件中给Repeater绑定值。再用Jqury控制导航

    的显示与隐藏


    代码在附件效果如图:

    主导航:


    二级导航,CSS未控制好:

     

    使用注意事项:

     引入:Jquery 1.3.2.min.js

    所使用的数据库为Access,结构,数据如图:



    逻辑处理的方法代码

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Data.OleDb;//引入oledb
    using System.Data;
    using System.Collections;
    using System.IO;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Text;
    
    /// <summary>
    /// 描述:数据访问类,业务处理类
    /// 功能:提供数据访问,业务处理的方法
    /// 作者:R3
    /// 时间:2011-01-04 16:13:59
    /// </summary>
    public class Bll_Manager
    {
        HttpResponse Response = null;
        public Bll_Manager(HttpResponse response)
        {
            Response = response;
            //
            // TODO: Add constructor logic here
            //
        }
        //数据库连接
        private static OleDbConnection con;
    
        public static OleDbConnection Con
        {
            get
            {
                if (con == null)
                {
                    con = new OleDbConnection
                        (@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db1.mdb;" +
                        "Persist Security Info=True");
                }
                else if (con.State == ConnectionState.Broken)
                {
                    con.Close();
                    con.Open();
                }
                else if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                return con;
            }
        }
    
        #region     GetBySQL   查询-返回datatable
        public static DataTable GetBySQL(string sql)
        {
            OleDbCommand cmd = new OleDbCommand(sql, Con);//执行命令
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);//装载结果
            DataTable dt = new DataTable();//创建datata
            da.Fill(dt);//填充datatable
            return dt;//返回结果
        }
        #endregion
    
    
        #region     ExcuteCmd   执行修改,删除,添加
        public static int ExcuteCmd(string sql)
        {
            OleDbCommand cmd = new OleDbCommand(sql, Con);//执行命令        
            int rs = cmd.ExecuteNonQuery();//返回执行结果
            return rs;
        }
        #endregion
    
    
        #region IsNumber 判断是否是数字
        public static bool IsNuber(string number)
        {
            bool isCheck = true;
            if (string.IsNullOrEmpty(number))
            {
                isCheck = false;
            }
            else
            {
                char[] charNumber = number.ToCharArray();
                for (int i = 0; i < charNumber.Length; i++)
                {
                    if (!char.IsNumber(charNumber[i]))
                    {
                        isCheck = false;
                        break;
                    }
                }
            }
            return isCheck;
        }
        #endregion
    
    
        #region  GetIp   获得IP地址
        public static string GetIp()
        {
            if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
            {
                return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].
                            Split(new char[] { ',' })[0];
            }
    
            else
            {
                return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
        }
        #endregion
    }
    


    后台代码:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                BindRptOne();
            }
        }
    
        ///绑定第一个Repeater
        public void BindRptOne()
        {
            //查询主导航
            string strBigType = "select * from N_bigtype order by b_id";
            //绑定一级Repeater
            rpt1.DataSource = Bll_Manager.GetBySQL(strBigType);
            rpt1.DataBind();
        }
    
        ///绑定第二个Repeater
        protected void rpt1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            //判断是否是listItem项
            if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
            {
                //查找第二个Repeater
                Repeater rpt2 = e.Item.FindControl("Rpt2") as Repeater;
                //循环获取Datalist的DataKeys
                int b_id = 0;
                for (int i = 0; i < rpt1.Items.Count;i++ )
                {
                    b_id = Convert.ToInt32(rpt1.DataKeys[i + 1].ToString());
                }
                //sql
                string strSmallType = "select * from N_smallType where b_id =" + b_id + " order by s_name";
                //source
                rpt2.DataSource = Bll_Manager.GetBySQL(strSmallType);
                //bind
                rpt2.DataBind();
            }
        }
    }
    


    前台代码:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="index.aspx.cs" Title="for_Repeater" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title> 
    
    <!--导航样式控制-->
    <style type="text/css">
            ul{list-style:left;}
            li {list-style:none; display:inline; text-align:center;}
            dt{ display:block; float:left; padding:20px; background-color:InactiveCaption; }
            #menu  dt  a{ text-decoration:none;}
           
           #menu dt a:hover,#menu dt a:active{Color:Red; background-color:White; float:left}
           #menu dt a:visited,#menu dt a:link{Color:black; float:left;}
           #menu dd{ float:left; padding-top:80px; cursor:pointer; 80px;}
    </style>
    
    <!--用Jquery控制导航-->
    <script src="Scripts/jquery-1.3.2.min.js" type="text/javascript" language="javascript"></script>
    <script src="Scripts/index.js" language="javascript" type="text/javascript"></script>
    <script language="javascript" type="text/javascript"  >
        /**
            用Jqueru控制Dd Dt的显示。        
        */
        
        $(document).ready(function () {
            $('#menu ul li').each(function () {
                $(this).children("dd").css("display", "none");
                $(this).children("dt").mouseover(function () {
                    $(this).next().css("display", "block");
    
                }).mouseout(function () {
                    $(this).next().css("display", "none");
                });
                $(this).children("dd").mouseover(function () {
                    $(this).css("display", "block");
                }).mouseout(function () {
                    $(this).css("display", "none");
                });
    
            });
        });
    
      
    </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="menu" style="1024px;">
             <ul>
    
             <!--第一个Repeater-->
                    <asp:DataList ID="rpt1" DataKeyField="b_id" runat="Server" onitemdatabound="rpt1_ItemDataBound"  RepeatDirection="Horizontal">
                       <ItemTemplate>
             	            <li style="1024px; ">
                            
                                <!--一级导航--->
                                <dt>    
                                    <a href="#"><%#Eval("b_name") %></a>    
                                </dt>
    
                                  <dd>
                                  <!--第二个Repeater-->
                                  <asp:Repeater ID="rpt2" runat="Server">
                                    <ItemTemplate>
                                        <!--二级导航--->
                                        
                                            <a href="#"><%#Eval("s_name") %></a>
                                        
                                    </ItemTemplate>
                                  </asp:Repeater>
                                  </dd>
    
                         </li>
                  </ItemTemplate>
                    </asp:DataList>
             </ul>
        </div>
        </form>
    </body>
    </html>
    

  • 相关阅读:
    ansible源码解读
    python标准模块(下)
    python学习之算法、自定义模块、系统标准模块(上)
    pathon 基础学习-集合(set),单双队列,深浅copy,内置函数
    python的map,filter,reduce学习
    python 列表
    python生成器、装饰器、正则
    python 模块学习
    python基础学习(一)--数据类型
    时间复杂度的计算
  • 原文地址:https://www.cnblogs.com/307914070/p/1925821.html
Copyright © 2011-2022 走看看