2011-09-06 59 views
0

問題是我在一個名爲EditableSiteMapProvider的類中覆蓋了BuildSiteMap()函數,該函數用於通過刪除或添加新節點來編輯站點地圖。當我做base.BuildSiteMap();,它給了我一個錯誤「XmlSiteMapProvider未初始化。調用initialize()方法第一。錯誤消息:「XmlSiteMapProvider未初始化,先調用Initialize()方法」

public override SiteMapNode BuildSiteMap() 
    { 

     SiteMapNode result = base.BuildSiteMap(); 

     //if (_loadFileNodes()) 
     //{ 
     // lock(objLock) 
     // { 
     //  base.Clear(); 
     //  result = base.BuildSiteMap(); 
     //  _dataFixInProgress = false; 
     // } 
     //} 

     if (!_dataFixInProgress)// && !_dataIsFixed) 
     { 

這個功能是從功能刷新(),這是被稱爲如下:

public void Refresh(){ 
     Clear(); 
     this._loadFileNodes(); 
     BuildSiteMap(); 
    } 

這兩個函數在類EditableSiteMapProvider和我用這個功能來刷新來自像files.aspx另一個頁面,用來上傳文件到數據庫的網站地圖也顯示在導航欄上他們的名字。爲此,我通過調用files.aspx.cs的Page Load上的刷新函數來刷新站點地圖,該函數查找所有新文件ploaded並添加或刪除站點地圖上的文件鏈接。

protected void Page_Load(object sender, EventArgs e) 
{ 


    DevExpress.Web.ASPxSiteMapControl.ASPxSiteMapControl smc = (DevExpress.Web.ASPxSiteMapControl.ASPxSiteMapControl)this.Master.FindControl("ASPxSiteMapControl1"); 

    Proj.Web.EditableXmlSiteMapProvider sitemap = new Proj.Web.EditableXmlSiteMapProvider(); 
    sitemap.Refresh(); 

} 

回答

0

根據MSDN,似乎SiteMapProvider的一個實例必須初始化才能使用。你在調用BuildSiteMap()之前調用了你的實例的Initialize嗎?

+0

所以我需要在調用刷新之前在files.aspx中初始化它? – Ratan

+1

我的理解是SiteMapProvider的每個實例在使用之前都必須初始化()。因此,您需要在實例化並使用其的任何頁面上初始化它。 – mikemanne

+0

因此,我不需要重寫initialize方法,只需在files.aspx中刷新之前調用它即可?我需要傳遞哪些屬性? – Ratan

相關問題