Я должен реализовать простое RadGridview, которое показывает присутствие клиентов, с возможностью делегировать один из других подарков, если человек не может участвовать в собрании. Почти все работает, как и ожидалось, за исключением того, что выпадающий ведет себя неправильно.
Я создал демонстрационный проект, который вы можете сделать из здесь
Для того, кто не увидит источник, вот код
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
public ObservableCollection<Item> Items { get; set; }
public RadForm1()
{
InitializeComponent();
this.Load += RadForm1_Load;
radGridView1.CellEditorInitialized += RadGridView1_CellEditorInitialized;
}
private void RadGridView1_CellEditorInitialized(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
if (e.Column.Name == "DelegationId")
{
if (!(e.Column is GridViewComboBoxColumn comboBoxColumn)) return;
if (!(radGridView1.DataSource is IEnumerable<Item> items) ||
!(e.Row.DataBoundItem is Item currentItem)) return;
var avaiableItems = items.Where(x => x.Id != currentItem.Id && x.Present).ToList();
avaiableItems.Insert(0, null);
comboBoxColumn.DataSource = avaiableItems;
}
}
private void RadForm1_Load(object sender, EventArgs e)
{
Items = new ObservableCollection<Item>();
for (int i = 0; i < 10; i++)
{
Items.Add( new Item{ Id = i, Name = $"Man_{i}"});
}
radGridView1.DataSource = Items;
}
}
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public bool Present { get; set; }
public int? DelegationId{ get; set; }
}
Первая проблема, с которой я сталкиваюсь, заключается в том, что, когда я устанавливаю подарок для "Man_1", затем вкладка и я иду, чтобы отредактировать Делегирование для "Man_2", я получил пустой выпадающий список, в то время как я ожидал увидеть "Man_1" .
![enter image description here](https://i.stack.imgur.com/G0NG4.png)
Если я делаю на «Man_3» после того, как на «Man_2» он показывает «Man_1» внутри выпадающего списка
Это довольно странно, но то, что происходит позже, еще хуже.
Сейчас я в такой ситуации
![enter image description here](https://i.stack.imgur.com/DpI4V.png)
До сих пор все вроде нормально. если я просто нажму на первую строку в столбце поля со списком («Делегирование»)
Я получил
(кажется, что значение каким-то образом было удалено)
Теперь, если я нажимаю на ячейку (всегда «Делегирование»), отличную от первой, отображаются значения
![enter image description here](https://i.stack.imgur.com/EOXbH.png)
Что я делаю не так?
Спасибо