Skip to content

Commit f0e8dce

Browse files
committed
doc: 更新示例
1 parent b918dc0 commit f0e8dce

File tree

2 files changed

+50
-27
lines changed

2 files changed

+50
-27
lines changed

src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
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+
68
namespace 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()

src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,16 @@ public async ValueTask TriggerKeyDown(string key)
424424
}
425425
}
426426

427+
/// <summary>
428+
/// Triggers the end of a drag-and-drop operation within the tree view.
429+
/// </summary>
430+
/// <remarks>This method is invoked via JavaScript interop to signal the completion of a drag-and-drop
431+
/// action. If a handler is assigned to <see cref="OnDragItemEndAsync"/>, it will be invoked with the drag
432+
/// context.</remarks>
433+
/// <param name="originIndex">The zero-based index of the item being dragged from its original position.</param>
434+
/// <param name="currentIndex">The zero-based index of the item's current position after the drag operation.</param>
435+
/// <param name="isChildren">A value indicating whether the drag operation involves child items.</param>
436+
/// <returns></returns>
427437
[JSInvokable]
428438
public async ValueTask TriggerDragEnd(int originIndex, int currentIndex, bool isChildren)
429439
{

0 commit comments

Comments
 (0)