2013-02-14 2 views
1

최근에 Umbraco를 사용하기 시작했으며 자체 섹션을 추가하는 방법을 알고 있습니다.데이터베이스의 레코드로 사용자 정의 트리 채우기

지금까지 나는 새로운 섹션을 추가하는 데 성공했고 나 또한 같은 다양한 블로그 게시물의 도움으로 사용자 정의 트리를 추가 시작했습니다 :이 새로운 섹션의 목적이다 http://www.robertgray.net.au/2011/5/10/creating-a-custom-content-tree-in-umbracohttp://www.geckonewmedia.com/blog/2009/8/3/how-to-create-a-custom-section-in-umbraco-4

내가 데이터베이스에 저장하고자하는 질문을 표시합니다. 기록은 볼 필요가 있지만 편집 할 수는 없습니다.

지금까지 '문의'라는 루트 노드와 '일반 문의'라는 노드가 있습니다. 모든 문의 사항을 'General Enquiries'의 하위 노드로 나열하고 싶습니다. 클릭하면 오른쪽의 주요 영역에 문의 사항을 표시하고 싶습니다. 위의 링크 된 최초의 블로그 게시물에서

가, 다음 코드는 자식 노드 표시하는 방법을 보여주기 위해 제공되었습니다 : 내가 운동 할 수 있는지부터

using atomicf1.domain.Repositories; 
using atomicf1.persistence; 
using umbraco.cms.presentation.Trees; 

namespace atomicf1.cms.presentation.Trees 
{ 
    public class loadDrivers : BaseTree 
    { 
     private IDriverRepository _driverRepository; 

     public loadDrivers(string application) : base(application) 
     { 
      _driverRepository = new DriverRepository(); 
     } 

     protected override void CreateRootNode(ref XmlTreeNode rootNode) 
     { 
      rootNode.Icon = FolderIcon; 
      rootNode.OpenIcon = FolderIconOpen; 
      rootNode.NodeType = TreeAlias; 
      rootNode.NodeID = "init"; 
     } 

     public override void Render(ref XmlTree tree) 
     {   
      var drivers = _driverRepository.GetAll(); 

      foreach(var driver in drivers) { 
       var dNode = XmlTreeNode.Create(this); 
       dNode.NodeID = driver.Id.ToString(); 
       dNode.Text = driver.Name; 
       dNode.Icon = "user.png"; 
       dNode.Action = "javascript:openDrivers(" + driver.Id + ")"; 
       tree.Add(dNode); 
      }    
     } 

     public override void RenderJS(ref System.Text.StringBuilder Javascript) 
     { 
      Javascript.Append(
       @" 
        function openDrivers(id) 
        { 
         parent.right.document.location.href = 'plugins/atomicf1/editDriver.aspx?id=' + id; 
        } 
       "); 
     } 
    } 
} 

을 것 같습니다 그 '드라이버'에서 이 예제는 _driverRepository에서 가져온 것입니다. 그러나 실제로 무엇인지 설명하고 코드가 실제로 데이터베이스의 데이터를 검색하는 코드 예제가없는 것 같습니다.

이 문제에 대한 도움을 주시면 매우 감사하겠습니다.

답변

1

내가 관측에 기반을 두었을 정도로 나는 움 브라 코에 관해서는 거의 알지 못한다고 말하면서 머리말을 붙이자.

당신이 로버트 그레이의 블로그 게시물에 링크 된 github repository의 소스 코드를 보면, 당신은 (실제 작업이 발생 기본 일반적인 AbstractRepository 추상 기본 클래스의 단지 쉘 서브 클래스) DriverRepository의 구현을 찾을 것입니다 . 이 코드는 Umbraco와는 아무런 관련이 없습니다.이 경우 Umbraco 상단에있는 샘플 F1 응용 프로그램 내에서 데이터 액세스를 위해 NHibernate과 함께 저장소 패턴을 구현 한 것입니다. 이 코드가 수행하는 작업은 응용 프로그램에서 모든 드라이버를 검색하고이를 반복하고 Umbraco에서 해당 XmlTreeNodes를 만드는 것입니다.

경우에 따라 (I) DriverRepository에 대한 참조를 응용 프로그램에서 사용하는 데이터 액세스 메커니즘으로 바꾸면됩니다. 당신의 Umbraco BaseTree에

public class EnquiryRepository : IEnquiryRepository { 

    // Methods for saving Enquiries, retrieving single Enquiries etc would go here... 

    public IEnumerable<Enquiry> GetAll() { 
    // Data access logic here - retrieve via NHibernate, Entity Framework, 
    // ADO.net, in-memory objects (as below) etc. 
    var enquiries = new List<Enquiry> 
    { 
     new Enquiry('Enquiry 1 title', 'Enquiry 1 content'), 
     new Enquiry('Enquiry 2 title', 'Enquiry 2 content'), 
     new Enquiry('Enquiry 3 title', 'Enquiry 3 content') 
    } 
    return enquiries; 
    } 

} 

당신은 다음이 작동합니다 : 당신이 로버트에게 접근 방식을 (간단이기는하지만) 비슷한을한다면

는 예를 들어, 응용 프로그램에서 다음과 같은 일을 할 수도 있습니다 로버트 (XmlTreeNodes 반복 및 반복 작성)와 비슷한 방식으로 서브 클래스를 작성하십시오.

+0

대단히 고맙습니다.이 말은 내가 과거에 붙잡 았던 것을 지나치는 데 정말로 도움이되어 내 마음 속에서 몇 가지를 정리했습니다. – Leah

관련 문제