我可能会遗漏一些微不足道的东西,所以请耐心等待。
我有两个 RadListBox,一个源和一个目标。
<telerik:RadListBox runat="server" ID="rdlbDisplayColumnsSource" AllowTransfer="true"
TransferMode="Move" TransferToID="rdlbDisplayColumnsDest" CssClass="rdlbDisplayColumns">
<Items></Items>
</telerik:RadListBox>
<telerik:RadListBox runat="server" ID="rdlbDisplayColumnsDest" CssClass="rdlbDisplayColumns"
AllowReorder="true">
<Items></Items>
</telerik:RadListBox>
用户选择要从源移动到目标的字段,当用户保存表单时,所选项目的值将保存到数据库中。下次用户加载表单时,需要显示选择。为此,我编写了以下代码来将项目从源传输到后端的目标。
var displayCols = _Model.AdditionalDisplayColumns.Split(',');
foreach (var val in displayCols)
{
var item = rdlbDisplayColumnsSource.FindItemByValue(val);
rdlbDisplayColumnsSource.Transfer(item, rdlbDisplayColumnsSource, rdlbDisplayColumnsDest);
}
由于 TransferMode 设置为 Move,我期待正在传输的项目从 Source ListBox 中删除,但事实并非如此。目标 ListBox 使用先前选择的项目进行了刷新,但这些项目仍然存在于源代码中!
如果我尝试在传输后删除源 ListBox 中的选定项目,则会引发异常,即项目不存在于列表框中。
在调用 .Transfer() 时,从后面的代码中实现“移动”行为的更简洁的方法是什么?