如何手动选择UltraListView项:未找到指定ID时选中首项
解决UltraListView选中项时的无效项错误
这个问题我之前用Infragistics的UltraListView时也踩过坑!你遇到的错误本质很明确:当_selectedId不在列表中时,FirstOrDefault会返回null,而UltraListView的SelectedItems.Add()方法不允许添加不属于当前控件Items集合的对象(null显然不符合要求),所以直接抛出了那个提示。
要实现「找不到匹配项就选中第一项」的需求,只需要在添加选中项前做两步判断:先确认找到的目标项是否有效,无效就替换成列表第一项,同时还要处理列表为空的极端情况。
完整解决方案代码
// 1. 查找匹配_selectedId的目标项 var targetItem = lvwSomethings.Items.Cast<UltraListViewItem>() .FirstOrDefault(x => x.SubItems["Id"].Value.Equals(_selectedId)); // 2. 清空已有选中项(如果是单选模式,根据业务场景可省略) lvwSomethings.SelectedItems.Clear(); // 3. 确定最终选中项:找到目标项就用它,否则取第一项;列表为空则返回null var itemToSelect = targetItem ?? lvwSomethings.Items.Cast<UltraListViewItem>().FirstOrDefault(); // 4. 仅当存在有效项时添加选中,避免空引用错误 if (itemToSelect != null) { lvwSomethings.SelectedItems.Add(itemToSelect); }
关键细节说明
- 空合并运算符
??:简化了「目标项为null则取第一项」的判断逻辑,代码更简洁易读。 - 空值校验:最后的
if (itemToSelect != null)是为了处理列表完全为空的情况,避免再次触发类似错误。 - 清空选中项:如果你的业务是单选模式,这一步很有必要,不然可能出现多选中的混乱状态;如果支持多选,可以直接去掉这行。
内容的提问来源于stack exchange,提问作者amindomeniko
相关产品推荐
相关产品推荐

