私はここで少し立ち往生しています。(SomeObject の) Lit であるデータソースを持つデータリストがあります。
Private MyObjectList As List (of SomeObject)
ユーザーがボタンをクリックして商品をショッピング バスケットに追加し、データリストをバインドする必要があるときに、データをロードします。
Form_load....
dl.Datasource = MyObjectList
dl.databind()
End Sub
データリストにデータを表示するために、追加したものを示すラベルがあり、e eventArg を使用してオブジェクトにキャストします。以下の例:
Protected Sub dl_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.DataListItemEventArgs) Handles dl.ItemDataBound
Dim myObject = DirectCast(e.Item.DataItem, SomeObject)
....
Label.Text = myObject.Description
End Sub
インライン コードは次のとおりです。
<asp:DataList ID="dl" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="DeletePRoduct" runat="server" Text="Delete" CommandName="Del" CommandArgument='<%# Container.ItemIndex %>'/>
</ItemTemplate>
</asp:DataList>
だから今、私はユーザーが製品を削除できるようにしたいと思います
Protected Sub dl_ItemCommand(source As Object, e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles dl.ItemCommand
Dim myObject = DirectCast(e.Item.DataItem, SomeObject)
If e.CommandName = "Del" Then
MyObjectList.Remove(myObject)
....
End If
End Sub
ItemCommand の下に myObject を渡そうとすると、キャストした e.item.DataItem が Nothing であるため、製品が削除されないことに気付きました。次に、行インデックスでその製品を削除することを考え、CommandArgument をボタンに追加しました。List は SomeObject のタイプを期待しているため、それができないことに気付きました。
この方法でオブジェクトを削除する方法を誰かアドバイスできますか?
ありがとう