リストビューでデータテーブルを取得しました。
ID TelcoName Reload Value(RM) Quantity Total(RM) 1 Maxis 5 1 5 削除 2 Digi 5 1 5 削除
これは基本的に私のテーブルがどのように見えるかです。私のhtmlコードはこれです:
<asp:ListView ID="ListView1" runat="server" OnSorting="ListView1Sorting" OnItemCommand="ListView1_ItemCommand">
<LayoutTemplate>
<table border="0" cellpadding="1">
<tr style="background-color:#FFFFFF">
<th align="center"><asp:Label ID="lblId" runat="server">Id </asp:Label></th>
<th align="center"><asp:Label ID="lblName" runat="server">TelcoName </asp:Label></th>
<th align="center"><asp:Label ID="lblReloadValue" runat="server">Reload Value(RM) </asp:Label></th>
<th align="center"><asp:Label ID="lblQuantity" runat="server">Quantity </asp:Label></th>
<th align="center"><asp:Label ID="lblTotal" runat="server">Total (RM) </asp:Label></th>
<th></th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td align="center"><asp:Label runat="server" ID="lblId"><%#Eval("ID") %></asp:Label></td>
<td align="center"><asp:Label runat="server" ID="lblTelcoName"><%#Eval("TelcoName") %></asp:Label></td>
<td align="center"><asp:Label runat="server" ID="lblReloadValue"><%#Eval("ReloadValue")%></asp:Label></td>
<td align="center"><asp:Label runat="server" ID="lblQuantity"><%#Eval("Quantity")%></asp:Label></td>
<td align="center"><asp:Label runat="server" ID="lblTotal"><%#Eval("Total")%></asp:Label></td>
<td align="center"><asp:LinkButton ID="lnkDelete" runat="server" CommandName="Sort" CommandArgument="Delete">Delete</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:ListView>
これは、削除するための私の背後にあるコードです:
Protected Sub ListView1_ItemCommand(ByVal sender As Object, ByVal e As ListViewCommandEventArgs) If (e.CommandName) = "Sort" Then Dim txteno As Label = DirectCast(e.Item.FindControl("ID"), Label) Dim deletecommand As String = "delete from dt where ID=" & Convert.ToInt32(txteno.text) Session("dt").DeleteCommand = deletecommand End If End Sub
ここでの問題は、ユーザーが選択した行の ID を取得できないことです。「ID」は最初の列の名前ですが、Web サイトを実行すると、このステートメントは何も返しません。
Dim txteno As Label = DirectCast(e.Item.FindControl("ID"), Label)
私の質問は、データの削除に使用する列 ("Id") の値を取得するにはどうすればよいですか? 私は周りに尋ね、誰かが私に e.item.DataItemIndex を使用するように提案しましたが、どこにもこのコマンドを見つけることができませんでした。これを解決する方法はありますか?
これは追加されたばかりです
Dim dt As New DataTable Dim i = 0 Dim ID As New DataColumn("ID") dt.Columns.Add(ID) Dim TelcoName As New DataColumn("TelcoName") dt.Columns.Add(TelcoName) Dim ReloadValue As New DataColumn ("ReloadValue") dt.Columns.Add(ReloadValue) Dim Quantity As New DataColumn("Quantity") dt.Columns.Add(Quantity) Dim Total As New DataColumn("Total") dt.Columns.Add(Total) ListView1 .DataSource = dt ListView1.DataBind() セッション("dt") = dt
リストビューにバインドした後、SQL ステートメントの参照として使用できるようにデータテーブルの名前を指定する必要がありますか、それとも dt として残し、SQL ステートメントで dt を参照するときに参照することができますか?リストビューのテーブルに?