简而言之,我就想实现动态绑定xmldatasource1的datafile,以方便不同的用户见到不同的导航菜单。
基本该有的控件都有了,就是属性设置方面不是很熟。
自己写的代码:
 protected void Page_Load(object sender, EventArgs e)
    {
        if ((oCook.getCookie("username") != "") && (oCook.getCookie("username") != null))
        {
            if (oCook.getCookie("username").ToString() == "admin")
            {
                DemoXmlDataSource.DataFile = "~/admin.xml";
            }
            else
            {
                DemoXmlDataSource.DataFile = "~/Usersite.xml";
            }
        }
        else
        {
            DemoXmlDataSource.DataFile = "~/Ulog.xml";
        }
    }
行不通,发现没我想的那么简单。admin.xml的代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="Default.aspx" title="首页" description ="首页">
    <siteMapNode url="ADMIN.aspx" title="管理员页面"  description="管理员页面" />
    <siteMapNode url="XGMM.aspx" title="修改密码"  description="修改密码" />
    <siteMapNode url="ALFB.aspx?id=1" title="发布案例" />
    <siteMapNode url="ALFB.aspx?id=2" title="发布知识点" />
    <siteMapNode url="WTFB.aspx" title="我要提问" />
    <siteMapNode url="XXFB.aspx" title="发布消息" />
    <siteMapNode url="BOOK.aspx" title="推荐图书" />
    <siteMapNode url="UPLOAD.aspx" title="上传资料" />
  </siteMapNode>
</siteMap>
其他类似。不一一举例。
menu和XmlDataSource的定义如下。
<asp:Menu ID="Menu1" runat="server" BackColor="#F1F1F1" DynamicHorizontalOffset="2" Font-Names="Verdana" ForeColor="#990000" 
StaticSubMenuIndent="0" Orientation="Vertical" StaticDisplayLevels="2" ItemWrap="true" MaximumDynamicDisplayLevels="0"> 
<DataBindings> 
<asp:MenuItemBinding DataMember="siteMapNode" NavigateUrlField="url" 
TextField="title" ToolTipField="description" ValueField="title" /> 
</DataBindings> 
</asp:Menu> 
<asp:XmlDataSource DataFile="~/Ulog.xml" ID="XmlDataSource1" runat="server" XPath="/*/*">
希望能得到解决方案,谢谢各位先。

解决方案 »

  1.   

    不要在页面代码里指明XmlDataSource 的DataFile,但要指明Menu控件的DataSourceID
        <asp:Menu ID="Menu1" runat="server" DataSourceID="DemoXmlDataSource">  
        <DataBindings>  
        <asp:MenuItemBinding DataMember="siteMapNode" NavigateUrlField="url"  TextField="title" ValueField="title" />  
        </DataBindings>  
        </asp:Menu>  
        <asp:XmlDataSource  ID="DemoXmlDataSource" runat="server" /> 后台cs代码无须修改
      

  2.   

    楼主的xml有问题,应该这样,把description 补全,否则会出错<?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
      <siteMapNode url="Default.aspx" title="首页" description ="首页">
        <siteMapNode url="ADMIN.aspx" title="管理员页面"  description="管理员页面" />
        <siteMapNode url="XGMM.aspx" title="修改密码"  description="修改密码" />
        <siteMapNode url="ALFB.aspx?id=1" title="发布案例"  description ="发布案例"/>
        <siteMapNode url="ALFB.aspx?id=2" title="发布知识点"  description ="发布知识点"/>
        <siteMapNode url="WTFB.aspx" title="我要提问"  description ="我要提问"/>
        <siteMapNode url="XXFB.aspx" title="发布消息"  description ="发布消息"/>
        <siteMapNode url="BOOK.aspx" title="推荐图书"  description ="推荐图书"/>
        <siteMapNode url="UPLOAD.aspx" title="上传资料"  description ="上传资料"/>
      </siteMapNode>
    </siteMap>