2011-09-06 4 views
0

새 노드를 제거하거나 추가하여 Sitemap을 편집하는 데 사용되는 EditableSiteMapProvider 클래스에서 BuildSiteMap() 함수를 재정의하는 것이 문제입니다. . 내가 base.BuildSiteMap()를 수행 할 때와 ;,는 나에게 "XmlSiteMapProvider가 초기화되지 않는 오류가 있습니다.오류 메시지 : "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의 페이지로드에 새로 고침 기능을 호출하여 사이트 맵을 새로 고칩니다. ploaded하고 Sitemap에서 파일 링크를 추가하거나 제거합니다.

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를 사용하려면 먼저 SiteMapProvider의 모든 인스턴스를 초기화()해야합니다. 따라서 인스턴스를 만들고 사용하는 모든 페이지에서 초기화해야합니다. – mikemanne

+0

그래서 initialize 메서드를 재정의 할 필요가 없습니다. files.aspx를 새로 고치기 전에 호출하십시오. 어떤 속성을 전달해야합니까? – Ratan

관련 문제