站点地图Web.sitemap的数据库读取

站点地图Web.sitemap的数据库读取,是借助TreeView实现

就可以和数据库的TreeView动态通用

当次加载完成TreeView数据库读取显示后,允许一次就可以了

读取数据库后,制动写入文件流的Web.sitemap中,代码如下:

1:先添加  TreeView控件 和 SiteMapPath控件 到页面中:

<asp:TreeView ID="TreeView2" runat="server">

</asp:TreeView>


                <asp:SiteMapPath ID="SiteMapPath2" runat="server">
                </asp:SiteMapPath>
 

后台代码:

添加一个按钮事件来执行(执行一次就可以):

    protected void btnXML_Click(object sender, EventArgs e)
    {
        DataBindsXMLSet(Convert.ToInt32(this.lblUserId.Text));
    }

 //站点地图字符串设置
    public string SetSiteMapNode(string vlaues)
    {
        return vlaues.Replace("'", @"""").Replace("&", "&amp;");
    }

 /// <summary>
    /// 设置站点地图用
    /// </summary>
    /// <param name="userId"></param>
    public void DataBindsXMLSet(int userId)
    {
        List<ArticlesType> artList = new ArticlesTypesManager().ArticlesTypeDateList();

        string path = Server.MapPath("~/Web.sitemap");  //文件路径 
  
        FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write);//创建流,覆盖
       
using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))   //写入
        {
            sw.Write(SetSiteMapNode("<?xml version='1.0' encoding='utf-8' ?>\t\n"));
            sw.Write(SetSiteMapNode("<siteMap xmlns='http://schemas.microsoft.com/AspNet/SiteMap-File-1.0' >\t\n"));
            sw.Write(SetSiteMapNode("<siteMapNode>\t\n"));

            foreach (ArticlesType item in artList)
            {
                TreeNode node = new TreeNode();
                node.Text = item.TypeName;
                node.Value = item.TypeId.ToString();
                node.NavigateUrl = "AdminSelectList.aspx?UserId=" + userId + "&TypeId=" + item.TypeId;
                sw.Write(SetSiteMapNode("<siteMapNode url='~/Admin/" + node.NavigateUrl + "' title='" + node.Text + "'  description=''>\t\n"));
                //node.NavigateUrl=

                List<Article> titleList = new ArticlesManager().SelectTitleByTypeId(item.TypeId, userId);
                if (titleList.Count <= 0)
                {
                    node.Text += "<span style='font-size:12px;color:'#333''>(无)</span>";
                    this.TreeView1.Nodes.Add(node);
                }
                else
                {
                    this.TreeView1.Nodes.Add(node);
                    for (int i = 0; i < titleList.Count; i++)
                    {
                        TreeNode chilnode = new TreeNode();
                        chilnode.Text = titleList[i].Title.ToString();
                        chilnode.Value = titleList[i].TypeId.ToString();
                        chilnode.NavigateUrl = "AdminDetails.aspx?UserId=" + titleList[i].UserId + "&ArticlesId=" + titleList[i].ArticlesId;
                        sw.WriteLine(SetSiteMapNode("<siteMapNode url='~/Admin/" + chilnode.NavigateUrl + "' title='" + chilnode.Text + "'  description='' />\t\n"));
                        node.ChildNodes.Add(chilnode);
                    }
                }

                sw.Write(SetSiteMapNode("</siteMapNode>\t\n"));
            }
            sw.Write(SetSiteMapNode("</siteMapNode>\t\n"));
            sw.Write(SetSiteMapNode("</siteMap>"));

        }
    }       

完成,回到vs中打开Web.sitemap文件,自动写入站点导航

如果数据库更新了,就再按一下执行按钮就搞定了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值