@page "/"
<div>
<select value="@ProcType" @onchange="@OnChangeProcType">
<option value="A" selected>A</option>
<option value="B">B</option>
</select>
@if(EditPersonList.Count == 0) {
<p>Plz Select ProcType...</p>
} else {
<EditForm Model="EditPersonList" OnValidSubmit="@HandleValidSubmit">
<table>
<tr>
<th>Id</th>
<th>Name</th>
<th>Age</th>
</tr>
@foreach (var item in EditPersonList)
{
<tr>
<td>
<input @bind="item.Id" />
</td>
<td>
<input @bind="item.Name" />
</td>
<td>
<select @bind="@item.Age">
<option value="1">1</option>
<option value="10">10</option>
<option value="100">100</option>
</select>
</td>
</tr>
}
</table>
<button type="submit">Submit</button>
</EditForm>
}
</div>
<h2>Result</h2>
<p>@((MarkupString)@Result)</p>
@code {
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonPerProc
{
public string Proc { get; set; }
public List<Person> Persons { get; set; }
}
public string ProcType { get; set; }
public List<PersonPerProc> BasePersonList {get; set;} = new List<PersonPerProc>();
public List<Person> EditPersonList { get; set; } = new List<Person>();
public string Result {get; set;}
protected override void OnInitialized()
{
// 初期データ作成
var Persons = new List<Person>();
Persons.Add(new Person() { Id = 1, Name = "A1", Age = 1});
Persons.Add(new Person() { Id = 2, Name = "A2", Age = 10});
Persons.Add(new Person() { Id = 3, Name = "A3", Age = 100});
BasePersonList.Add( new PersonPerProc(){Proc = "A", Persons = Persons });
Persons = new List<Person>();
Persons.Add(new Person() { Id = 4, Name = "B1", Age = 100});
Persons.Add(new Person() { Id = 5, Name = "B2", Age = 10});
Persons.Add(new Person() { Id = 6, Name = "B3", Age = 1});
BasePersonList.Add( new PersonPerProc(){Proc = "B", Persons = Persons });
// ProcType = "A"のものを画面に表示
Refresh("A");
}
void Refresh(string procType)
{
ProcType = procType;
EditPersonList = BasePersonList.FirstOrDefault(f => f.Proc == procType).Persons;
}
void OnChangeProcType(ChangeEventArgs e)
{
Refresh((string)e.Value);
}
void HandleValidSubmit()
{
Result = string.Empty;
foreach(var person in EditPersonList)
{
Result += $"ID:{person.Id}\tName:{person.Name}\tAge:{person.Age}<br>";
}
}
}