새 노드를 제거하거나 추가하여 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();
}
그래서 새로 고침을 호출하기 전에 files.aspx에서 초기화해야합니까? – Ratan
SiteMapProvider를 사용하려면 먼저 SiteMapProvider의 모든 인스턴스를 초기화()해야합니다. 따라서 인스턴스를 만들고 사용하는 모든 페이지에서 초기화해야합니다. – mikemanne
그래서 initialize 메서드를 재정의 할 필요가 없습니다. files.aspx를 새로 고치기 전에 호출하십시오. 어떤 속성을 전달해야합니까? – Ratan