@page "/"
<div class="row">
<div class="col-md-6">
<div>
<button @onclick="Change">Set config Values</button>
<button @onclick="Clear">Clear Checks</button>
</div>
@for (int i = 0; i < NumberOfControls; i++)
{
int x = i; // need to make a copy here or everything thinks it is the last one whrn you click it
String Value = $"sms{i}";
String Text = "This is for " + Value;
<MyCheckBox @ref="Checkboxes[x]" ValidValue="@Value" Text="@Text" OnChange="Changed" />
}
</div>
<div class="col-md-6">
<h4>List of Checked Boxes</h4>
@foreach (MyCheckBox cb in Checkboxes.Where(c => c.Checked == true))
{
<div>@cb.ValidValue --- @cb.Checked</div>
}
</div>
</div>
@code{
private int NumberOfControls = 100;
List<MyCheckBox> Checkboxes = new List<MyCheckBox>();
List<string> ConfigurationString = new List<string>() { "sms5", "sms6", "sms7", "sms8", "sms10", "sms22", "sms21", "sms29" };
protected override void OnInitialized()
{
// create place holders in the list that will be replaced by the actual controls when the page renders
for (int i = 0; i < NumberOfControls; i++)
{
Checkboxes.Add(new MyCheckBox());
}
base.OnInitialized();
}
void Change()
{
foreach (var configValue in ConfigurationString)
{
string localc = configValue;
MyCheckBox x = Checkboxes.Where(c => c.ValidValue == localc).FirstOrDefault();
if (x != null)
{
x.Checked = !x.Checked;
}
}
}
void Clear()
{
@foreach (MyCheckBox cb in Checkboxes)
{
cb.Checked = false;
}
}
void Changed()
{
StateHasChanged(); //redraw this page
}
}