SharePoint SPHierarchyDataSourceControl+SPTreeView

今天使用SPHierarchyDataSourceControl和SPTreeView来显示SharePoint文档库层级结构的过程中,发现一直在报下面的错误:

The target 'ctl00$ctl01$mainContentArea$treeNavigation$WebTreeViewV4' for the callback could not be found or did not implement ICallbackEventHandler.

然后就懵逼了,这是问题是在展开左侧导航树的过程中发生的,所以猜想应该是需要实现个什么接口。找了半天似乎没人遇到过,难道这是个别人都会的问题,只是我小白了。

最终花费了宝贵的2小时,终于解决了,不过真的很简单,实现个“INamingContainer”接口就OK,请参考以下代码:

 public partial class LeftNavigation : UserControl, INamingContainer 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            SPList _list = SPContext.Current.List;
            // Setup myDataSource to show only the Child List
            SPHierarchyDataSourceControl myDataSource = new SPHierarchyDataSourceControl();
            myDataSource.ID = "TreeViewDataSourceV4";
            myDataSource.IncludeDiscussionFolders = false;
            if (_list != null)
            {
                myDataSource.RootContextObject = "List";
                myDataSource.ShowDocLibChildren = true;
                myDataSource.ShowFolderChildren = true;
                myDataSource.ShowListChildren = true;
                myDataSource.ShowWebChildren = false;

            }
            else
            {
                myDataSource.RootContextObject = "Web";
                myDataSource.ShowDocLibChildren = true;
                myDataSource.ShowFolderChildren = true;
                myDataSource.ShowListChildren = true;
                myDataSource.ShowWebChildren = false;
            }
            TreeViewNavigationManagerV4.Controls.Add(myDataSource);

            SPTreeView treeview = new SPTreeView();
            treeview.ID = "WebTreeViewV4";
            treeview.ShowLines = false;
            treeview.DataSourceID = "TreeViewDataSourceV4";
            treeview.ExpandDepth = 0;
            treeview.SelectedNodeStyle.CssClass = "ms-tv-selected";
            treeview.NodeStyle.CssClass = "ms-tv-item";
            treeview.NodeIndent = 12;
            treeview.ExpandImageUrl = "/_layouts/15/images/tvclosed.png?rev=23";
            treeview.ExpandImageUrlRtl = "/_layouts/15/images/tvclosedrtl.png?rev=23";
            treeview.CollapseImageUrl = "/_layouts/15/images/tvopen.png?rev=23";
            treeview.CollapseImageUrlRtl = "/_layouts/15/images/tvopenrtl.png?rev=23";
            treeview.NoExpandImageUrl = "/_layouts/15/images/tvblank.gif?rev=23";
            TreeViewRememberScrollV4.Controls.Add(treeview);
        }
    }

 

posted @ 2016-10-25 17:18  任泽华Ryan  阅读(302)  评论(0)    收藏  举报