33// See the LICENSE file in the project root for more information.
44// Maintainer: Argo Zhang([email protected] ) Website: https://www.blazor.zone 55
6+ using DocumentFormat . OpenXml . Spreadsheet ;
7+
68namespace BootstrapBlazor . Server . Components . Samples ;
79
810/// <summary>
@@ -33,7 +35,7 @@ public sealed partial class TreeViews
3335
3436 private bool AutoCheckParent { get ; set ; }
3537
36- private List < TreeViewItem < TreeFoo > > DraggableItems { get ; } = GetDraggableItems ( ) ;
38+ private List < TreeViewItem < TreeFoo > > DraggableItems { get ; set ; } = [ ] ;
3739
3840 private List < TreeViewItem < TreeFoo > > DisabledItems { get ; } = GetDisabledItems ( ) ;
3941
@@ -79,30 +81,45 @@ public sealed partial class TreeViews
7981
8082 private string ? _selectedValue ;
8183
84+ /// <summary>
85+ /// <inheritdoc/>
86+ /// </summary>
87+ protected override void OnInitialized ( )
88+ {
89+ base . OnInitialized ( ) ;
90+
91+ var items = GetDraggableItems ( ) ;
92+ DraggableItems = TreeFoo . CascadingTree ( items ) ;
93+ DraggableItems [ 0 ] . IsExpand = true ;
94+ DraggableItems [ 1 ] . IsExpand = true ;
95+ DraggableItems [ 2 ] . IsExpand = true ;
96+ }
97+
8298 private Task OnTreeItemClick ( TreeViewItem < TreeFoo > item )
8399 {
84100 Logger1 . Log ( $ "TreeItem: { item . Text } clicked") ;
85101 return Task . CompletedTask ;
86102 }
87103
88- private static Task OnDragItemEndAsync ( TreeViewItem < TreeFoo > item )
104+ private Task OnDragItemEndAsync ( TreeViewDragContext < TreeFoo > context )
89105 {
90- // 如果拖拽到 Id=2 的节点下则不允许
91- //if (arg.Target.Value.Id == "2" && arg.DropType is TreeDropType.AsFirstChild or TreeDropType.AsLastChild)
92- //{
93- // return Task.FromResult(false);
94- //}
95- //// 如果拖拽到 Id=2 的节点下的兄弟节点则不允许
96- //if (arg.DropType is TreeDropType.AsSiblingBelow && arg.Target.Parent?.Value.Id == "2")
97- //{
98- // return Task.FromResult(false);
99- //}
100- //// 如果 Id=6 的节点则不允许拖出
101- //if (arg.Source?.Value.Id == "6")
102- //{
103- // return Task.FromResult(false);
104- //}
105- //return Task.FromResult(true);
106+ // 根据 context 处理原始数据
107+ var items = GetDraggableItems ( ) ;
108+ var source = items . Find ( i => i . Id == context . Source . Value . Id ) ;
109+ if ( source != null )
110+ {
111+ var target = items . Find ( i => i . Id == context . Target . Value . Id ) ;
112+ if ( target != null )
113+ {
114+ source . ParentId = context . IsChildren ? target . Id : target . ParentId ;
115+ }
116+ }
117+ DraggableItems = TreeFoo . CascadingTree ( items ) ;
118+ DraggableItems [ 0 ] . IsExpand = true ;
119+ DraggableItems [ 1 ] . IsExpand = true ;
120+ DraggableItems [ 2 ] . IsExpand = true ;
121+
122+ StateHasChanged ( ) ;
106123 return Task . CompletedTask ;
107124 }
108125
@@ -145,7 +162,7 @@ private Task OnTreeItemChecked(List<TreeViewItem<TreeFoo>> items)
145162 return Task . CompletedTask ;
146163 }
147164
148- private static List < TreeViewItem < TreeFoo > > GetDraggableItems ( )
165+ private static List < TreeFoo > GetDraggableItems ( )
149166 {
150167 List < TreeFoo > items =
151168 [
@@ -155,19 +172,15 @@ private static List<TreeViewItem<TreeFoo>> GetDraggableItems()
155172
156173 new ( ) { Text = "Item B (Drop inside blocked)" , Id = "2" , Icon = "fa-solid fa-font-awesome" } ,
157174 new ( ) { Text = "Item F" , Id = "6" , ParentId = "2" , Icon = "fa-solid fa-font-awesome" } ,
175+ new ( ) { Text = "Item G (Can not move out)" , Id = "9" , ParentId = "2" , Icon = "fa-solid fa-font-awesome" } ,
158176
159177 new ( ) { Text = "Item C" , Id = "3" , Icon = "fa-solid fa-font-awesome" } ,
160- new ( ) { Text = "Item H" , Id = "6 " , ParentId = "3" , Icon = "fa-solid fa-font-awesome" } ,
161- new ( ) { Text = "Item I" , Id = "6 " , ParentId = "3" , Icon = "fa-solid fa-font-awesome" } ,
178+ new ( ) { Text = "Item H" , Id = "7 " , ParentId = "3" , Icon = "fa-solid fa-font-awesome" } ,
179+ new ( ) { Text = "Item I" , Id = "8 " , ParentId = "3" , Icon = "fa-solid fa-font-awesome" } ,
162180
163- new ( ) { Text = "Item G (Can not move out)" , Id = "6" , ParentId = "2" , Icon = "fa-solid fa-font-awesome" } ,
164181
165182 ] ;
166- var ret = TreeFoo . CascadingTree ( items ) ;
167- ret [ 0 ] . IsExpand = true ;
168- ret [ 1 ] . IsExpand = true ;
169- ret [ 2 ] . IsExpand = true ;
170- return ret ;
183+ return items ;
171184 }
172185
173186 private static List < TreeViewItem < TreeFoo > > GetDisabledItems ( )
0 commit comments