diff --git a/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor b/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor index 40cee7b..bd49fb0 100644 --- a/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor +++ b/ComponentPractice/ComponentPractice/Components/Layout/NavMenu.razor @@ -49,6 +49,12 @@   SRBS + + diff --git a/ComponentPractice/ComponentPractice/Components/Pages/DataGrid.razor b/ComponentPractice/ComponentPractice/Components/Pages/DataGrid.razor new file mode 100644 index 0000000..cff621b --- /dev/null +++ b/ComponentPractice/ComponentPractice/Components/Pages/DataGrid.razor @@ -0,0 +1,47 @@ +@page "/datagrid" + +@inject InMemoryData data; + +@rendermode RenderMode.InteractiveServer + + + DataGrid IQuariable + + + + + + + + + + + + + + + + + + + + + + + + +@code { + IEnumerable employees; + IList selectedEmployees; + + protected override async Task OnInitializedAsync() + { + employees = await data.GetEmployeeDataAsync(100); + + selectedEmployees = new List() { employees.FirstOrDefault() }; + } +} diff --git a/ComponentPractice/ComponentPractice/Components/_Imports.razor b/ComponentPractice/ComponentPractice/Components/_Imports.razor index 8fa5423..482c7df 100644 --- a/ComponentPractice/ComponentPractice/Components/_Imports.razor +++ b/ComponentPractice/ComponentPractice/Components/_Imports.razor @@ -9,4 +9,6 @@ @using ComponentPractice @using ComponentPractice.Components @using Radzen -@using Radzen.Blazor \ No newline at end of file +@using Radzen.Blazor +@using Models +@using Data \ No newline at end of file diff --git a/ComponentPractice/ComponentPractice/Data/InMemoryData.cs b/ComponentPractice/ComponentPractice/Data/InMemoryData.cs new file mode 100644 index 0000000..167ae66 --- /dev/null +++ b/ComponentPractice/ComponentPractice/Data/InMemoryData.cs @@ -0,0 +1,47 @@ +using ComponentPractice.Models; +using System.Linq.Dynamic.Core; + +namespace ComponentPractice.Data +{ + public class InMemoryData + { + public async Task> GetEmployeeDataAsync(int count) + { + var employees = new List(); + var random = new Random(); + var firstNames = new[] { "John", "Jane", "Michael", "Emily", "Robert", "Linda", "William", "Jessica", "David", "Sarah" }; + var lastNames = new[] { "Smith", "Johnson", "Brown", "Williams", "Jones", "Garcia", "Miller", "Davis", "Martinez", "Hernandez" }; + var jobs = new[] { "Developer", "Designer", "Manager", "Analyst", "Consultant", "Administrator", "Engineer", "Specialist", "Technician", "Coordinator" }; + var titles = new[] { "Junior", "Mid", "Senior", "Lead", "Chief" }; + var cities = new[] { "New York", "Los Angeles", "Chicago", "Houston", "Phoenix", "Philadelphia", "San Antonio", "San Diego", "Dallas", "San Jose" }; + var regions = new[] { "NY", "CA", "IL", "TX", "AZ", "PA", "TX", "CA", "TX", "CA" }; + var counties = new[] { "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA" }; + + for (int i = 0; i < count; i++) + { + var employee = new Employee + { + ID = i + 1, + Photo = $"https://randomuser.me/api/portraits/med/{(i % 2 == 0 ? "men" : "women")}/{i}.jpg", + FirstName = firstNames[random.Next(firstNames.Length)], + LastName = lastNames[random.Next(lastNames.Length)], + Job = jobs[random.Next(jobs.Length)], + Title = titles[random.Next(titles.Length)], + BirthDate = new DateTime(random.Next(1950, 2000), random.Next(1, 13), random.Next(1, 29)), + HireDate = DateTime.Today.AddDays(-random.Next(1, 3650)), + Address = $"{random.Next(1, 9999)} Main St", + City = cities[random.Next(cities.Length)], + Region = regions[random.Next(regions.Length)], + PostalCode = $"{random.Next(10000, 99999)}", + County = counties[random.Next(counties.Length)], + Phone = $"{random.Next(100, 999)}-555-{random.Next(1000, 9999)}", + Extension = $"{random.Next(100, 9999)}", + Notes = "Generated demo data" + }; + employees.Add(employee); + } + + return await employees.ToDynamicListAsync(); + } + } +} diff --git a/ComponentPractice/ComponentPractice/Models/Employee.cs b/ComponentPractice/ComponentPractice/Models/Employee.cs new file mode 100644 index 0000000..8bbb844 --- /dev/null +++ b/ComponentPractice/ComponentPractice/Models/Employee.cs @@ -0,0 +1,22 @@ +namespace ComponentPractice.Models +{ + public class Employee + { + public int ID { get; set; } + public string Photo { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Job { get; set; } + public string Title { get; set; } + public DateTime BirthDate { get; set; } + public DateTime HireDate { get; set; } + public string Address { get; set; } + public string City { get; set; } + public string Region { get; set; } + public string PostalCode { get; set; } + public string County { get; set; } + public string Phone { get; set; } + public string Extension { get; set; } + public string Notes { get; set; } + } +} diff --git a/ComponentPractice/ComponentPractice/Program.cs b/ComponentPractice/ComponentPractice/Program.cs index c61b0b0..add23c8 100644 --- a/ComponentPractice/ComponentPractice/Program.cs +++ b/ComponentPractice/ComponentPractice/Program.cs @@ -1,4 +1,5 @@ using ComponentPractice.Components; +using ComponentPractice.Data; using Radzen; namespace ComponentPractice @@ -15,6 +16,8 @@ namespace ComponentPractice builder.Services.AddRadzenComponents(); + builder.Services.AddScoped(); + var app = builder.Build(); // Configure the HTTP request pipeline.