些細なことを見逃しているかもしれないので、ここで我慢してください。
ソースと宛先の 2 つの 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>
ユーザーはソースから宛先に移動するフィールドを選択し、ユーザーがフォームを保存すると、選択した項目の値が DB に永続化されます。次にユーザーがフォームをロードしたときに、選択内容を表示する必要があります。そのために、次のコードを作成して、アイテムをソースからバックエンドの宛先に転送しました。
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() の呼び出し中にコード ビハインドから「Move」動作を実現するよりクリーンな方法は何ですか?