Làm việc với TreeNodeBinding trong ASP.NET Treeview Control

Tôi đã làm việc trên những gì tôi hy vọng sẽ có một sắp phát hành CodePlex dự án cung cấp một chút tốt đẹp tích hợp của các bộ phận web nói chuyện với nhau thông qua kết nối nhà cung cấp/người tiêu dùng cho các mục đích của khám phá một trang web SharePoint dưới bao.  (Điều này chắc chắn đã được thực hiện trước khi, nhưng đây là một dự án học tập nhiều như bất cứ điều gì khác).  Điều này có nghĩa là để là một thay thế cho windows explorer xem của SharePoint 2010 thư viện tài liệu.

Các mã đã đệ quy thông thường gọi xuống của SPWeb và SPLists từ bắt đầu được đưa ra một điểm.  Các đối tượng mà không vượt qua đó tất cả xây dựng một chuỗi XML giống như thế này:

<sitecollection url =’http://demo2010a:9090′>
 
<web
     tiêu đề = 'Hello World Sandbox' 
     Mẫu =' một trang web cho đội bóng để nhanh chóng tổ chức, tác giả, và chia sẻ thông tin, BLAH BLAH BLAH'>

     <danh sách
        tiêu đề ='BCC_Health_Services_FAQs’
        Template ='CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[DELIM]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</danh sách>

     <danh sách
        tiêu đề = 'BCC_Notifications' 
        Template = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[DELIM]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </danh sách>

  </web>

</sitecollection>

Tôi mong đợi để làm sạch lên rằng XML trước khi tất cả được nói và thực hiện.

Tôi muốn cuối cùng nhận được thông tin đó lên và vào một control Treeview.  Không chính xác trái đất shattering công cụ.

Thách thức tôi đã ở đây là để kết nối xem cây với một kiểm soát nguồn dữ liệu XML thay vì tự xây dựng của tôi treenodes như tôi đi qua cây.  Tôi đã làm điều này một phần vì tôi cố ý làm cho những điều khó khăn hơn về bản thân mình (Đây là một dự án học tập sau khi tất cả) và một phần vì tôi có này khái niệm mơ hồ mà xây dựng các nút cây như tôi đi qua cây không phải là một ý tưởng tốt cho lâu dài.

Vấn đề với cách tiếp cận này là rằng các control Treeview không biết về thuộc tính tốt trên các nút thú vị như "danh sách" hoặc "web", do đó, nó cho thấy sản lượng này theo mặc định:

 

image

Đó không phải là hữu ích.  Đây là nơi mà các lớp học TreeNodeBinding giúp.  Tôi có thể sử dụng điều này để nói với các control Treeview làm thế nào nó nên giải thích các XML.  Đây là một ví dụ:

TNB = mới TreeNodeBinding();
TNB.DataMember = "danh sách"; // Đây là nhãn trong xml cho một trang web.
TNB.TargetField = "listid";
TNB.ValueField = "tiêu đề";
TNB.ToolTipField = "Mẫu";

Ràng buộc này cho treeview rằng khi nó tìm thấy một <danh sách> nút trong các XML, áp dụng các bindings cho TargetField, ValueField và ToolTipField.  Trong có thể ứng dụng, các bản đồ như sau:

  • TargetField: Khi ai đó nhấp chuột vào một nút giá trị, Đây là những gì bạn sẽ nhận được để SelectedNode.Value.  Điều này là không được để lẫn lộn với...
  • ValueField: Đây là những gì bạn muốn Treeview để hiển thị cho người dùng.
  • ToolTipField: Giá trị từ XML mà bạn muốn làm một Tooltip.

Thêm TreeNodebinding để xem cây cửa và bạn nhận được đầu ra như thế này:

 

image

Tôi sẽ có thêm về tất cả điều này như tôi tiếp tục trên các dự án và cuối cùng đặt này lên ngày Codeplex.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

3 Những suy nghĩ trên "Làm việc với TreeNodeBinding trong ASP.NET Treeview Control

  1. Pingback: Tweets đề cập đến làm việc với TreeNodeBinding trong ASP.NET Treeview Control «Paul Galvin SharePoint Space -- Topsy.com

  2. Holger

    Hi Paul,

    Tôi chỉ cần kiểm tra rằng bản thân mình. Nó đã làm việc như xa như bạn mô tả rằng ngay cả khi tôi không có thông tin đó từ trang web của bạn (Thật tiếc :-)).
    Vấn đề tôi quan tâm đến là, Tôi đã cố gắng để làm cho cấu trúc lười biếng tải với bất động sản PopulateOnDemand. Nếu không treeview tải cấu trúc hoàn thành một toàn bộ mà tôi muốn tránh. Tài sản này PopulateOnDemand có vẻ không có bất kỳ tác dụng.

    Cũng treeview không lưu bất kỳ mở rộng / sụp đổ nhà nước thông tin.

    Bạn đã giải quyết những vấn đề này?

    Thân

    Holger

    1. Paul Galvin bài tác giả

      Tôi biết bạn gửi bình luận này một thời gian dài trước đây. Xin lỗi vì không bao giờ đáp ứng. Tôi giả định rằng bạn có giải pháp của bạn từ lâu :).

Để lại câu trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *