@page "/" <h1>DragDrop demo</h1> <ul ondragover="event.preventDefault();" style="margin:20px"> @foreach (var item in Games) { if(item != null) { <li draggable="true" style="list-style-type:none; height:30px" @key="item.ID" tabindex="1" @ondrop="@(()=> Drop(item))" @ondrag="@(()=> StartDrag(item))"> <span>@item.Text</span> <small>@item.ID</small> </li> } else { <li>NULL??</li> } } </ul> <button @onclick="ReportList" >List</button> @code { int currentIndex; void StartDrag(Game item) { currentIndex = GetIndex(item); Console.WriteLine($"DragStart for {item.ID} index {currentIndex}"); } void ClickItem(Game item) { currentIndex = GetIndex(item); } int GetIndex(Game item) { return Games.FindIndex(a => a.ID == item.ID); } void Drop(Game item) { if (item != null) { Console.WriteLine($"Drop item {item.Text} ({item.ID})"); var index = GetIndex(item); Console.WriteLine($"Drop index is {index}, move from {currentIndex}"); // get current item var current = Games[currentIndex]; // remove game from current index Games.RemoveAt(currentIndex); Games.Insert(index, current); // update current selection currentIndex = index; StateHasChanged(); } else { Console.WriteLine("Drop - null"); } } void ReportList() { int i =0; foreach (var item in Games) { Console.WriteLine($"{i++}: {item.ID} = {item.Text}"); } } public class Game { public string ID { get; set; } public string Text { get; set; } public override string ToString() { return Text; } } List<Game> Games = new List<Game> { new Game() { ID= "Game1", Text= "American Football"}, new Game() { ID= "Game2", Text= "Badminton" }, new Game() { ID= "Game3", Text= "Basketball" }, new Game() { ID= "Game4", Text= "Cricket"}, new Game() { ID= "Game5", Text= "Football" }, new Game() { ID= "Game6", Text= "Golf" }, new Game() { ID= "Game7", Text= "Hockey" }, new Game() { ID= "Game8", Text= "Rugby" }, new Game() { ID= "Game9", Text= "Snooker" }, new Game() { ID= "Game10", Text= "Tennis" }, }; }
namespace BlazorFiddleProject { using Microsoft.AspNetCore.Components.Builder; using Microsoft.Extensions.DependencyInjection; public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IComponentsApplicationBuilder app) { app.AddComponent<App>("app"); } } }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width"> <title>BlazorFiddleProject</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <style> app { } </style> <script type="text/javascript"> </script> </head> <body> <app>Loading...</app> <script src="_framework/blazor.webassembly.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> </body> </html>

Add component

BlazorFiddle was updated from Blazor 0.7 to .NET 6.0. Your old source code could not work. You need to upgrade to latest.