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:
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:
Saya akan memiliki lebih pada semua ini sebagai saya melanjutkan proyek dan akhirnya menempatkan ini di Codeplex.
</akhir>
Ikuti saya di kegugupan di http://www.twitter.com/pagalvin