コード例 #1
0
        private void FindAndSelectItem(int id)
        {
            //first check if the item is not already in the Items collection
            foreach (var item in DebateList.Items)
            {
                if ((int)item.GetDataKeyValue("ID") == id)
                {
                    item.Selected = true;
                    return;
                }
            }

            //save the previously expanded indexes
            var expandedIndexes = new TreeListHierarchyIndex[DebateList.ExpandedIndexes.Count];

            DebateList.ExpandedIndexes.CopyTo(expandedIndexes);

            //add newly expanded indexes here
            var newIndexes = new List <TreeListHierarchyIndex>();

            //cause all items to expand to reveal all data
            DebateList.ExpandAllItems();

            //loop through all the items and search for the target by its key value
            foreach (var item in DebateList.Items)
            {
                if ((int)item.GetDataKeyValue("ID") == id)
                {
                    //select the item
                    item.Selected = true;

                    //expand all parents of the item
                    var parent = item.ParentItem;
                    while (parent != null)
                    {
                        newIndexes.Add(parent.HierarchyIndex);
                        parent = parent.ParentItem;
                    }
                }
            }

            //shrink back the treelist
            DebateList.CollapseAllItems();

            //restore the previously expanded indexes
            DebateList.ExpandedIndexes.AddRange(expandedIndexes);

            //add the newly expanded indexes that will reveal the selected item
            foreach (var index in newIndexes)
            {
                if (!DebateList.ExpandedIndexes.Contains(index))
                {
                    DebateList.ExpandedIndexes.Add(index);
                }
            }

            //rebind to reflect the changes
            DebateList.Rebind();
        }
コード例 #2
0
        private void FindAndSelectItem(int id)
        {
            //first check if the item is not already in the Items collection
            foreach (var item in DebateList.Items)
            {
                if ((int)item.GetDataKeyValue("ID") == id)
                {
                    item.Selected = true;
                    return;
                }
            }

            //save the previously expanded indexes
            var expandedIndexes = new TreeListHierarchyIndex[DebateList.ExpandedIndexes.Count];
            DebateList.ExpandedIndexes.CopyTo(expandedIndexes);

            //add newly expanded indexes here
            var newIndexes = new List<TreeListHierarchyIndex>();

            //cause all items to expand to reveal all data
            DebateList.ExpandAllItems();

            //loop through all the items and search for the target by its key value
            foreach (var item in DebateList.Items)
            {
                if ((int)item.GetDataKeyValue("ID") == id)
                {
                    //select the item
                    item.Selected = true;

                    //expand all parents of the item
                    var parent = item.ParentItem;
                    while (parent != null)
                    {
                        newIndexes.Add(parent.HierarchyIndex);
                        parent = parent.ParentItem;
                    }
                }
            }

            //shrink back the treelist
            DebateList.CollapseAllItems();

            //restore the previously expanded indexes
            DebateList.ExpandedIndexes.AddRange(expandedIndexes);

            //add the newly expanded indexes that will reveal the selected item
            foreach (var index in newIndexes)
            {
                if (!DebateList.ExpandedIndexes.Contains(index))
                {
                    DebateList.ExpandedIndexes.Add(index);
                }
            }

            //rebind to reflect the changes
            DebateList.Rebind();
        }