Bekerja dengan TreeNodeBinding dalam ASP.NET Treeview kontrol

Saya telah bekerja pada apa yang saya harap akan segera dirilis CodePlex proyek yang menyediakan sedikit terpadu bagus bagian web yang berbicara satu sama lain melalui penyedia konsumen koneksi untuk menjelajahi situs SharePoint di bawah selimut.  (Ini tentu saja telah dilakukan sebelum, Tapi ini adalah proyek belajar sebanyak apa pun).  Hal ini dimaksudkan untuk menjadi pengganti tampilan explorer windows SharePoint 2010 dokumen Perpustakaan.

Kode telah rekursif biasa yang memanggil menurunkan SPWeb dan SPLists dari diberikan mulai titik.  Objek yang melakukan semua yang melintasi membangun string XML yang terlihat seperti ini:

<sitecollection url =’http://demo2010a:9090′>
 
<Web
     title = 'Halo dunia Sandbox' 
     Template =' situs untuk tim untuk cepat mengatur, penulis, dan berbagi informasi, BLA BLA BLA '>

     <Daftar
        title ='BCC_Health_Services_FAQs’
        Template ='CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</Daftar>

     <Daftar
        title = 'BCC_Notifications' 
        Template = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
     </Daftar>

  </Web>

</sitecollection>

Saya berharap untuk membersihkan up yang XML sebelum semua dikatakan dan dilakukan.

Saya ingin akhirnya mendapatkan informasi bahwa atas dan ke dalam Treeview kontrol.  Bukan bumi menghancurkan barang.

Tantangan saya mengambil di sini adalah untuk menghubungkan tampilan struktur pohon ke kontrol sumber XML Data daripada secara manual membangun treenodes saya seperti yang saya melintasi pohon.  Saya melakukan ini sebagian karena aku sengaja membuat hal lebih keras pada diri saya sendiri (ini adalah proyek belajar setelah semua) dan sebagian karena aku punya gagasan samar-samar yang membangun node pohon seperti saya melintasi pohon bukan ide yang baik untuk jangka panjang.

Masalahnya dengan pendekatan ini adalah bahwa kontrol Treeview tidak tahu tentang baik atribut pada node menarik seperti "daftar" atau "web" Jadi itu menunjukkan output ini secara default:

 

image

Itu tidak berguna.  Ini adalah dimana kalangan TreeNodeBinding membantu.  Aku bisa menggunakan ini untuk memberitahu Treeview kontrol bagaimana itu harus menafsirkan XML.  Berikut adalah contoh:

tnb = TreeNodeBinding baru();
tnb.DataMember = "daftar"; // Ini adalah label dalam xml untuk situs.
tnb.TargetField = "listid";
tnb.ValueField = "judul";
tnb.ToolTipField = "Template";

Mengikat ini memberitahu treeview bahwa ketika ia menemukan <Daftar> node dalam XML, menerapkan fungsi untuk TargetField, ValueField dan ToolTipField.  Mei app, ini peta sebagai berikut:

  • TargetField: Bila seseorang mengklik pada nilai node, ini adalah apa yang Anda akan mendapatkan untuk SelectedNode.Value.  Hal ini tidak menjadi bingung dengan...
  • ValueField: Ini adalah apa yang Anda inginkan Treeview untuk menampilkan kepada pengguna.
  • ToolTipField: Nilai dari XML yang Anda inginkan sebagai Tooltip.

Tambahkan TreeNodebinding ke tampilan struktur pohon DataBindings dan Anda mendapatkan output seperti ini:

 

image

Saya akan memiliki lebih pada semua ini sebagai saya melanjutkan proyek dan akhirnya menempatkan ini di Codeplex.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

3 pemikiran tentang “Bekerja dengan TreeNodeBinding dalam ASP.NET Treeview kontrol

  1. Pingback: Tweets yang menyebutkan bekerja dengan TreeNodeBinding dalam ASP.NET Treeview kontrol «Paul Galvin SharePoint Ruang -- Topsy.com

  2. Holger

    Hi Paulus,

    Aku hanya memeriksa bahwa diriku. Ini bekerja sejauh yang Anda dijelaskan bahwa bahkan jika saya tidak mendapatkan informasi tersebut dari situs Anda (Sayang sekali :-)).
    Intinya saya tertarik, Aku mencoba untuk membuat struktur malas loading dengan properti PopulateOnDemand. Sebaliknya treeview beban struktur lengkap secara keseluruhan yang saya ingin menghindari. Properti ini PopulateOnDemand tampaknya tidak memiliki efek apapun.

    Juga treeview tidak menyimpan setiap memperluas / runtuhnya informasi negara.

    Apakah Anda memecahkan masalah ini?

    Salam

    Holger

    Balasan
    1. Paul Galvin posting penulis

      Saya tahu Anda diposting komentar ini lama. Maaf untuk tidak pernah merespons. Saya berasumsi bahwa Anda mendapat solusi Anda lama :).

      Balasan

Tinggalkan balasan

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *