我必须实现一个简单的RadGridview,该视图可以显示客户的在场状态,并且如果该人无法参加会议,则可以委派其他礼物之一。除了下拉菜单的行为不正确之外,几乎所有事情都按预期进行。
我已经创建了一个演示项目,您可以从here来
对于看不到源代码的人,这里是代码
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”设置为存在时,然后使用Tab键并编辑“ Man_2”的代表团,我有一个空的下拉菜单,而我原本希望看到“ Man_1”
如果在对“ Man_2”进行操作后对“ Man_3”进行操作,则会在下拉菜单中显示“ Man_1”
这很奇怪,但是以后发生的事情仍然更糟。
现在我处于这种情况
到现在为止,一切似乎都还好。如果我只单击第一行,则在组合框列(“委派”) 我有
现在,如果我单击与第一个单元格不同的单元格(始终是“委派”),则会显示值
我在做什么错? 谢谢