广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    使用UserControl做网站导航条的思路 分析

    2018-05-04 21:20:43 次阅读 稿源:互联网
    广告

    网址其实就是目录文件的影射。因此只要拆分URL,并且根据URL的层级关系进行循环,就可以得到当前导航文件的目录。

    1、建立数据库表:Navigate

    列名数据类型说明
    idint
    parentIdint父ID
    rootint层级,0代表根目录,最顶层
    pathNamevarchar(50)(URL)路径名称
    navNamevarchar(50)(栏目)导航名称


    2、建立用户控件 navigate.ascx
    -----------------------------------------------------------
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Navigate.ascx.cs" Inherits="UC_Navigate" %>
    <div style="display:block;margin-top:5px;margin-left:3px;margin-bottom:5px;">

         您当前的位置:<a href="/index.aspx">首页</a> 
          >>
          <asp:Label ID="lblNavigate" runat="server"></asp:Label>
          <asp:Label ID="lblTitle" runat="server"></asp:Label>

    </div>


    3、用户控件的CS后台文件 navigate.ascx.cs
    -----------------------------------------------------------
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    using Bai51.Data;

    public partial class UC_Navigate : System.Web.UI.UserControl
    {
        private string localUrl="http://localhost:8085";
        private string title;
        private DataSet ds;
        private DataTable dt;

        protected void Page_Load(object sender, EventArgs e)
        {

            #region -- 获取导航信息表内容(缓存) --
            ds=(DataSet)Cache["dsNavigateCache"];
            if(ds==null)
           {
             ds=SqlComd.CreateSqlDataSet("select * from navigate","dsNavigate"); 
             Cache.Insert("dsNavigateCache",ds,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromHours(24));
           }
           dt=ds.Tables[0];
            #endregion

             #region -- 生成导航信息 --
            //分割当前URL地址
            string[] webUrl = System.Web.HttpContext.Current.Request.Path.Split(new char[] { '/' });
            int len = webUrl.Length - 1;

            //层级循环
            string strUrl = localUrl + "/";
            string strNavigate = "";
            string parenId = "0";

            for (int i = 1; i < len; i++)
            {
                string sql = "root=" + Convert.ToString(i-1) + " and pathName='" + webUrl[i] + "' and parentId=" + parenId;
                DataRow[] rows = dt.Select(sql);

                //循环连接地址
                strUrl += (webUrl[i] + "/");
                strNavigate += "<a href='" + strUrl + "'>" + rows[0]["navName"].ToString() + "</a>" + " >> ";

                //保存父ID
                parenId = rows[0]["Id"].ToString();
            }
           #endregion

            lblNavigate.Text=strNavigate;
            lblTitle.Text=title ;
        }

        #region --控件属性 --
        public string LocalUrl
        {
            get{return  localUrl;}
            set{ localUrl=value ;}
        }
        public string Title
        {
            get { return title; }
            set { title = value; }
        }
        #endregion   

    }

    4、使用方法
    -----------------------------------------------------------
    在页面中拖入 Navigate.ascx 用户控件,命名为"navBar"。
    在后台代码中写入当前文件的导航名称即可。
          navBar.Title = "本页面是XX栏目";

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告