@using Syncfusion.Blazor.Buttons
@using System.Collections.ObjectModel;
<div>
<SfDropDownList @ref="DDLObject" TItem="RecordModel" TValue="int" @bind-Value="@id" DataSource="@records">
<DropDownListFieldSettings Text="@nameof(RecordModel.Text)" Value="@nameof(RecordModel.Id)" />
</SfDropDownList>
<SfButton OnClick="OnChangeButtonClick">Change values</SfButton>
<SfButton OnClick="OnAddButtonClick">Add Value</SfButton>
</div>
<div>
Id: @id
</div>
<div>
Collection: @(Newtonsoft.Json.JsonConvert.SerializeObject(records))
</div>
@code
{
SfDropDownList<int, RecordModel> DDLObject;
private int id;
public class RecordModel
{
public int Id { get; set; }
public string Text { get; set; }
}
private ObservableCollection<RecordModel> records = new ObservableCollection<RecordModel>() {
new RecordModel(){ Id= 1, Text= "A" },
new RecordModel(){ Id= 2, Text= "B" },
new RecordModel(){ Id= 3, Text= "C" },
new RecordModel(){ Id= 4, Text= "D" },
new RecordModel(){ Id= 5, Text= "E" },
new RecordModel(){ Id= 6, Text= "F" },
new RecordModel(){ Id= 7, Text= "G" }
};
private ObservableCollection<RecordModel> records1 = new ObservableCollection<RecordModel>() {
new RecordModel(){ Id= 1, Text= "A1" },
new RecordModel(){ Id= 2, Text= "B1" },
new RecordModel(){ Id= 3, Text= "C1" },
new RecordModel(){ Id= 4, Text= "D1" },
new RecordModel(){ Id= 5, Text= "E1" },
new RecordModel(){ Id= 6, Text= "F1" },
new RecordModel(){ Id= 7, Text= "G1" }
};
private void OnAddButtonClick(MouseEventArgs args)
{
records.Add(new RecordModel { Id = records.Max(x => x.Id) + 1, Text = (records.Max(x => x.Id) + 1).ToString() });
}
private async Task OnChangeButtonClick(MouseEventArgs args)
{
this.records = this.records1;
//var list = new List<RecordModel>();
//foreach (var item in records)
// list.Add(new RecordModel { Id = item.Id + records.Count, Text = (item.Text + item.Text) });
//foreach (var item in list)
// if (!records.Any(x => x.Id == item.Id))
// records.Insert(records.Count, item);
//var count = records.Count;
//for (var i = 0; i < count; i++)
// if (!list.Any(x => x.Id == records[i].Id))
// {
// records.RemoveAt(i);
// i--;
// count--;
// }
//await InvokeAsync(() => StateHasChanged());
}
}
|
<div>
<SfDropDownList @ref="DDLObject" TItem="RecordModel" TValue="int?" @bind-Value="@id" DataSource="@records">
<DropDownListFieldSettings Text="@nameof(RecordModel.Text)" Value="@nameof(RecordModel.Id)" />
</SfDropDownList>
<SfButton OnClick="OnChangeButtonClick">Change values</SfButton>
<SfButton OnClick="OnAddButtonClick">Add Value</SfButton>
</div>
<div>
Id: @id
</div>
<div>
Collection: @(Newtonsoft.Json.JsonConvert.SerializeObject(records))
</div>
@code
{
SfDropDownList<int?, RecordModel> DDLObject;
private int? id;
public class RecordModel
{
public int? Id { get; set; }
public string Text { get; set; }
}
private ObservableCollection<RecordModel> records = new ObservableCollection<RecordModel>() {
new RecordModel(){ Id= 1, Text= "A" },
new RecordModel(){ Id= 2, Text= "B" },
new RecordModel(){ Id= 3, Text= "C" },
new RecordModel(){ Id= 4, Text= "D" },
new RecordModel(){ Id= 5, Text= "E" },
new RecordModel(){ Id= 6, Text= "F" },
new RecordModel(){ Id= 7, Text= "G" }
};
private void OnAddButtonClick(MouseEventArgs args)
{
records.Add(new RecordModel { Id = records.Max(x => x.Id) + 1, Text = (records.Max(x => x.Id) + 1).ToString() });
}
private async Task OnChangeButtonClick(MouseEventArgs args)
{
var list = new ObservableCollection<RecordModel>(records);
records = new ObservableCollection<RecordModel>();
foreach (var item in list)
records.Add(new RecordModel { Id = item.Id + records.Count, Text = (item.Text + item.Text) });
foreach (var item in list)
if (!records.Any(x => x.Id == item.Id))
records.Insert(records.Count, item);
var count = records.Count;
for (var i = 0; i < count; i++)
if (!list.Any(x => x.Id == records[i].Id))
{
records.RemoveAt(i);
i--;
count--;
}
await InvokeAsync(() => StateHasChanged());
}
}
|
private async Task OnChangeButtonClick(MouseEventArgs args)
{
var list = new ObservableCollection<RecordModel>(records);
records = new ObservableCollection<RecordModel>();
foreach (var item in list)
records.Add(new RecordModel { Id = item.Id + records.Count, Text = (item.Text + item.Text) });
|